对象为_______。
A. s B. s->a C. s.a D. *s
(22)假定AB为一个类,则执行 “AB r1=r2;”语句时将自动调用该类的( )。 A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 拷贝构造函数 (23)若需要使类中的一个指针成员变量指向一块动态存储空间,则通常在( )函数中完成。
A. 析构 B. 构造 C. 任一成员 D. 友元
(24)当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储( )个整数。
A. n B. n+1 C. n-1 D. 1
(25)假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行 “A x(4,5);”语句后,x.a和x.b的值分别为( )。
A. 4和5 B. 5和4 C. 4和20 D. 20和5
(26)假定一个类的构造函数为 “A(int aa=1, int bb=0) {a=aa; b=bb;}”,则执行 “A x(4);”语句后,x.a和x.b的值分别为( )。
A. 1和0 B. 1和4 C. 4和1 D. 4和0
(27)假定AB为一个类,则( )为该类的拷贝构造函数的原型说明。 A. AB(AB x); B. AB(AB& x); C. void AB(AB& x); D. AB(int x); (28)假定一个类的构造函数为 “B(int ax, int bx): a(ax), b(bx) {}”,执行 “B x(1,2),y(3,4);x=y;”语句序列后x.a的值为( )。
A. 1 B. 2 C. 3 D. 4 (29)假定一个类AB只含有一个整型成员变量a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为( )。
A. AB() {a=0;} B. AB(int aa=0): a(aa) {} C. AB(int aa): a(aa) {} D. AB() {}
(30)假定一个类AB只含有一个整型成员变量a,用户为该类定义的带参构造函数可以为( )。
A. AB() {} B. AB(): a(0){} C. AB(int aa=0) {a=aa;} D. AB(int aa) {}
(31)对于任一个类,用户所能定义的构造函数的个数至多为( )。 A. 0 B. 1 C. 2 D. 任意个
(32)对于任一个类,用户所能定义的析构函数的个数至多为( )。 A. 0 B. 1 C. 2 D. 任意个
(33)假定AB为一个类,则执行 “AB *px=new AB[n];”语句时将( )。 A. 动态分配一个对象数组 B. 动态分配一个对象 C. 静态分配一个数组 D. 静态分配一个对象
(34)设px是指向一个类对象的指针变量,则执行 “delete px;”语句时,将自动调用该类的( )。
13
A. 无参构造函数 B. 带参构造函数 C. 析构函数 D. 拷贝构造函数
(35)当一个类对象离开它的作用域时,系统自动调用该类的( )。
A. 无参构造函数 B. 带参构造函数 C. 拷贝构造函数 D. 析构函数 (36)假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( )。
A. 0 B. 1 C. n D. n-1
(37)假定AB为一个类,则执行 “AB a[10];”语句时调用该类无参构造函数的次数为( )。
A. 0 B. 1 C. 9 D. 10
(38)假定AB为一个类,则执行 “AB *px=new AB[n];”语句时调用该类无参构造函数的次数为( )。
A. n B. n-1 C. 1 D. 0
(39)一个类的静态成员变量所表示属性 ( )。
A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性 (40)类的静态成员的访问控制( )。 A. 只允许被定义为private
B. 只允许被定义为private或protected C. 只允许被定义为public
D. 可允许被定义为private、protected或public (41)静态成员函数对类的成员变量访问( )。
A. 是不允许的 B. 只允许是静态成员变量
C. 只允许是非静态成员变量 D. 可允许是静态成员变量或非静态成员变量 (42)被非静态成员函数访问的类的成员变量( )。
A. 可以是非静态成员变量或静态成员变量 B. 不可能是类的静态成员变量
C. 只能是类的非静态成员变量 D. 只能是类的静态成员变量 (43)静态成员变量的初始化是在( )中进行的。 A. 构造函数 B. 任何成员函数 C. 所属类 D. 全局区
9.3 怎样定义私有成员?怎样定义公有成员?私有成员和公有成员有什么差别?
9.4 C++语言的类定义中,类的成员变量和成员函数分别描述了对象模型中的什么成分?
9.5 成员变量在定义时是否允许给出初始值?为什么?
9.6 构造函数的功能是什么?系统是在什么时候、以什么方式调用构造函数的? 9.7 析构函数的功能是什么?系统是在什么时候、以什么方式调用析构函数的?
14
9.8 构造函数是否可以重载?重载构造函数有什么意义?析构函数是否可以重载?
9.9 构造函数设计时应注意哪些事项?
9.10 什么样的类的析构函数可以设计为空?什么样的类的析构函数不可以设计为空?为什么?
9.11 C++语言中的构造函数和析构函数有返回值吗?你能解释其原因吗?
9.12 当在类定义体外实现成员函数时,为什么要在成员函数的返回类型后、成员函数名前加上“<类名>::”? 9.13 在编译完例3.1程序后,系统是否为各成员函数的参数分配了内存空间?为什么?
9.14 创建对象和定义变量有什么差别? 9.15 什么叫const对象? 9.16 怎样创建动态对象?
9.17 一个外部程序中的对象可以访问类中的私有成员吗?可以访问类中的公有成员吗?
9.18 写出对象调用其成员的语句形式。写出指向对象的指针调用其成员的语句形式。
9.19 一个非const成员函数可以修改类中的const成员变量吗?一个const成员函数可以修改类中的const成员变量吗? 9.20 什么叫重载?重载有什么意义?
9.21 什么叫子对象?整体——部分对象模式是怎样实现的?
9.22 什么叫外部类?什么叫内部类?什么样的类可以设计成内部类?
9.23 static成员变量和非static成员变量有什么差别?static成员函数和非static成员函数有什么差别?
9.24 若一个类的某个成员函数修饰为const,表示什么含义?若一个成员函数的某个参数修饰为const,表示什么含义?
9.25 在一个应用程序中,怎样进行static成员变量的初始化赋值?
9.26 类是创建对象的模板,一个程序中创建了许多对象,当这些对象都调用一个相同的成员函数时,系统是怎样区分当前是哪个对象调用的?
9.27 在开发一个应用系统时,应该用怎样的分析方法从现实世界中抽象出类? 9.28 类怎样体现了封装性?
9.29 以例3.16为例说明,类中的一个成员变量,是否可因为要求承担的任务太多而应该单独设计成一个类?
程序阅读和设计题:
9.30 阅读程序,给出运行结果:
(1)
#include \
15
class A {
private: int a,b; public :
A( ) { a=b=0;
cout<<\
}
A(int m) { a=b=m;
cout<<\ }
A(int m,int n) { a=m;b=n;
cout<<\ }
void print( ) { cout<<\ }
};
void main( ) { A a1,a2(10),a3(10,20); a1.print( ); a2.print( ); a3.print( ); }
2)
#include \class point {
private:
int x;
16
(