二、填空题(前14个空,每空1分,后3个空,每空2分,共20分)
1、类和对象的关系可表述为:类是对象的 抽象 ,而对象则是类的 实例 。
2、静态成员函数没有隐含的 this指针 ,所以,在C++程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。
3、在图1中,A,B,C,D,E,F均是类,其中属于单继承的派生类有 E ,属于多继承的派生类有 D 、F ,类F的基类有 A、B、C、D、E ,类A的派生类有 D、F 。
A D F
图1 类的继承层次图
拷贝构造函数声明: Point(Point&) Point(const
B C E Point&) 析构函数声明:~类名 如~Person() 常对象语法格式为:const class_Type object_name 或class_Type const object_name 常引用: const data_type & reference_name 常函数: return_type function_name(formal parameters list) const 静态数据成员:static datatype variablename 静态函数:static return_type Function_name(formal parameters list) 友元函数: friend return_type function_name(formal parameters list)
4、如果只想保留公共基类的一个复制,就必须使用关键字 virtual 把这个公共基类声明为虚基类。
5、从实现的角度来讲,多态性可以划分为两类: 静态多态性 和动态多态性性 。
6、如果一个类包含一个或多个纯虚函数,则该类称为 抽象性 。 7、若要把void fun()定义为类A的友元函数,则应在类A的定义中加入语句 friend void fun(A &a) 。
8、列出C++中的两种代码复用方式: 继承 和 组合或模板 。 9、析构函数的作用 在对象被系统释放之前做一些内存清理工作 。 10、假定A是一个类名,则该类的拷贝构造函数的原型说明语句为: A(const A&) 。
11、后置自增运算符“++”重载为类的成员函数(设类名为A)的形式为:A operator++(int) 。
三、阅读下面4个程序,写出程序运行时输出的结果。(共13分) 1、
#include
void exchange(int &a, int &b, int &c) { if( a
if( b { int a=12,b=89,c=56; exchange(a, b, c); cout<<\ return 0; } 2、 #include A( ) { cout << \}; class B { public: B( ) { cout <<\ }; class C: public A { public: C( ) { cout << \Private: B b; }; int main ( ) { a=89,b=56,c=12 C obj; ABC return 0; } 3、 #include A(){cout<<\virtual ~A(){cout<<\}; class B: public A {public: B(int i) { cout<<\ buf=new char[i]; } virtual ~B() { delete []buf; cout<<\} private: char *buf; }; A::A() called. B::B() called. B::~B() called. A::~A() called.