Visual C++程序设计辅导一.基本概念1.类的封装性:是一种程序设计机制,将对象的属性(数据)和行为(对数据操作的代码)组合成一个有机 的整体。 2.消息:Windows应用程序是由事件驱动的,当事件发生时,系统产生一条描述事件发生的信息的消息。 3.函数重载:指的 是两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同。 4.模板:将函数或类中使用的数据类型参数化,从而创建对多种数据类 型通用的函数或类。 5.抽象类:如果一个类中至少包含一个纯虚函数,则该类称为抽象类。6.虚函数:如果在基类中某个成员函数被声明为虚 函数,则意味着该成员函数在派生类中可能有其它的实现。7.运算符重载:对已有的运算符赋予多重含义,同一个运算符作用于不同类型的数据或 不同个数的操作数将导致不同的行为发生。8派生类:在面向对象程序设计中,继承就是一个新类可以从现有类获得特征,由现有类派生出来的新类 称为派生类或子类。9.类的多态性:多态性是指允许不同类的对象对同一消息做出不同的响应。二.基础理论1.构造函数与析构函数的作用。构 造函数的功能是创建对象时使用给定的值来初始化对象;析构函数的功能主要用来在对象撤销是做一些清理工作。2.简述创建一个基于对话框应用 程序的步骤。(1) 利用AppWizard创建一个基于对话框的应用程序框架。(2) 利用对话框编辑器以可视化的方法编辑对话框,放置 各种控件并设置控件的属性。(3) 使用C1assWizard在对话框类中添加数据成员、交换函数和有效性验证函数,为控件添加关联的成 员变量。(4) 使用ClassWizard为对话框的按钮和其它控件产生的事件添加消息处理函数。(5) 对特殊控件进行初始化,为消息 处理函数添加代码。3.在程序中实现动态多态性,需要哪些条件。动态多态性是指在函数名、函数参数和返回类型都相同的情况下,在编译阶段不 能确定要调用的函数,只能在程序运行时才能确定要调用的函数,需要通过继承和虚函数来实现。4.简述画刷的功能以及创建画刷的步骤。画刷可 以填充图形内部。在MFC应用程序中使用画刷的步骤大致相同:(1) 创建画刷。(2) 将创建的画刷选入设备环境。 (3) 输出图形。 (4) 还原设备环境先前的画刷。5.什么是赋值兼容规则?赋值兼容规则包含哪些情况。赋值兼容规则是指在公有继承情况下,一个派生类的 对象可以用于基类对象使用的地方。赋值兼容规则包括如下三种情况: Derived d;(1) 派生类的对象可以赋值给基类对象 B ase b=d;(2) 派生类的对象可以初始化基类的引用 Base &b=d;(3) 派生类对象的地址可以赋值给指向基类的指针 Base b=&d;6.简述MFC的组成部分。MFC类库主要由类、宏和全局函数等三个部分组成。(1)MFC类库中的类以层次结构 的方式组织起来。(2)MFC提供的宏很多,主要用来提供消息映射、运行时对象类型服务、诊断调试和异常处理等功能。(3)MFC以全局函 数的形式提供了自己的各种API函数,它们可以在MFC源程序的任何地方调用7.CPaintDC、CClientDC和CWindowD C主要用在何处。(1)CPaintDC类用于在窗口客户区域绘图(仅限于OnPaint处理函数)。 (2)CClientDC类用于 在窗口客户区域绘图(除OnPaint外的任何处理程序)。(3)CWindowDC类用于在窗口类任意地方绘图,包括非客户区域8.编写 可序列化的类应按哪些步骤进行。(1)直接或间接从CObject类派生出新的类(2)重载Serialize成员函数(3)在类定义中加 入DECLARE_SERIAL宏(4)为类定义一个缺省的构造函数(该函数没有参数)(5)在类的实现中加入IMPLEMENT_SER IAL宏三.知识应用1.设计一个Employee类,它包含以下数据成员:工号、姓名、年龄和工资,在类中定义构造函数初始化类的数据成 员,添加相应成员函数输出雇员信息。编写主函数测试。#include#includeusing namespace std;class Employee{private: string num,name; int age; f loat salary;public:Employee (string nu,string na,int a,float g){n ame=na; num=nu; salary=g; age=a;}void showEmployee(){cout< <<''\t''< ee e("A0012","张三",19,3000);e.showEmployee(); return 0;}2.下列Planef igure类是一个表示平面图形的抽象类,perimeter ( )为求图形周长的函数,area( )为求图形面积的函数。请从Pla nefigure类派生三角形类(Triangle)、矩形类(Rectangle),并给出具体的求面积、周长函数。#include< iostream>#includeusing namespace std;class Planefigure{ pu blic: virtual float area()=0; virtual float perimeter()=0; };clas s Triangle:public Planefigure {public: float area( ){float s=(a+b +c)/2;return sqrt(s(s-a)(s-b)(s-c));}float perimeter(){return a+b+c;} Triangle(float x,float y,float z){ a=x; b=y; c=z; } private:float a,b,c;};class Rectangle:public Planefigure{public: float area( ){return ab;}float perimeter(){return 2(a+b);} Rect angle(float x,float y){ a=x; b=y; }private:float a,b;}; int main(){Triangle t(3,4,5);Rectangle r(6,2);cout<<"三角形的面积:"< area()< 设计一个栈类Stack,实现不同数据类型的入栈和出栈操作。#include template s Type> class Stack {private:int top,length;Type s;public:Stack( int);~Stack(){delete []s;}void Push(Type);Type Pop();};template < class Type> Stack::Stack(int n) {s=new Type[n];length=n;top =0; } template void Stack::Push(Type a) {if (t op==length){cout<<"Stack is full!"< } template Type Stack::Pop() {if (top==0){cout <<"stack is empty!"< ook类,它包含以下数据成员:书号、书名、作者、出版社和价格,在类中定义构造函数初始化类的数据成员,添加相应成员函数输出图书的基本 信息。编写主函数测试。#include#includeusing namespace std; class Book{private: string id,name,author,publish; float price;pu blic:Book (string i,string n,string a,string pu,float pr){id=i;na me=n;author=a;publish=pu;price=pr;}void showBook(){cout< < in(){Book book("9780123356","Visual C++","王育坚","清华大学出版社",40.5);bo ok.showBook(); return 0;}5.已知点类的定义如下:class Point{……private: doubl e x,y;}; 分别用成员函数和友元函数实现计算两点间的距离,函数名为distance。 double Point::distance( const Point &a ){ double dx,dy;dx = x-a.x;dy = y-a.y;return sqrt( dxdx + dydy );}用友元函数实现double distance( const Point &a, const Point &b ){ double dx,dy;dx = a.x-b.x;dy = a.y-b.y;return sqrt( dxdx + dydy );} |
|