5、已知类A中一个成员函数说明为:
voidset(A&a);,其中A&a的含意是____3_。
①指向类A的指针为a;
②将a的地址值赋值给变量set;
③a是类A的对象引用,用来作函数set()的形参;
④变量A与a按位相与作为函数set()的参数;
6、派生类的构造函数的成员初始化列表中,不能包含__3_____。
①基类的构造函数;
②派生类中子对象的初始化;
③基类的子对象初始化;
④派生类中一般数据成员的初始化;
7、关于引用,下列的说法中错误的是____3___。
① 引用是给被引用的变量取一个别名;
② 引用主要是用来作函数的形参和函数的返回值;
③ 在声明引用时,要给它另开辟内存单元;
④ 在声明引用时,必须同时使它初始化;
8、在下列说法中,_3_____不会调用拷贝初始化构造函数。
1当对象作为函数实参传递给函数形参时;
2明确表示由一个对象初始化另一个对象时;
3用赋值运算符”=”将一个对象赋给另一个同类对象时;
④当对象作为函数返回值时;
9、___2__是不可以作为某类的成员的。
① 自身类对象的指针 ② 自身类的对象
③ 自身类对象的引用 ④ 另一个类的对象
10、关于虚函数的描述中,__3___是正确的。
1虚函数是一个static类型的成员函数;
2虚函数是一个非成员函数;
3基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数;
④派生类的虚函数与基类的同名虚函数应具有不同的参数个数和类型;
11、下列四项选择中,_____3_不是流类的对象。
①cin②cout③buff④cerr
12、下列关于const限定符的说法中,错误的是_4_____。
①const限定符是左结合的,即它修饰在它左边的类型;
②在说明const变量时,必须对该变量进行初始化;
③与宏定义符号常量的区别是,const将产生一个具有类型的符号;
④const变量是常量变量,所以一个const变量可以被多次赋予不同的常量;
13、在下列的各类函数中,___3___不是类的成员函数。
① 构造函数 ② 析构函数
③ 友元函数 ④ 拷贝初始化构造函数
14、__3___不是析构函数的特征。
1一个类中只能定义一个析构函数;
2析构函数名与类名相同;
3析构函数只是用来释放对象,所以析构函数是空函数;
④析构函数不指定数据类型,并且也没有参数;
15、下述静态数据成员的特性中,____4__是错误的。
1说明静态数据成员时前面要加修饰符static;
2静态数据成员要在类体外进行初始化;
3在程序中引用公有静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;
④静态数据成员是个别对象所共用的;
16、具有转换函数功能的构造函数,应该是____2__。
1不带参数的构造函数;
2带有一个参数的构造函数;
3带有两个以上参数的构造函数;
④缺省构造函数;
17、下列继承方式中,_3____种继承方式是错的。
① 公有继承; ② 私有继承;
③ 完全继承; ④ 保护继承;
18、下列对继承关系的描述中,_____4_是对的。
1在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;
2在公有继承中,基类中只有公有成员对派生类的对象是可见的;
3在私有继承中,基类中只有公有成员对派生类是可见的;
④在私有继承中,基类中的保护成员对派生类的对象是可见的;
19、对定义重载函数的下列要求中,___4___是错误的。
1要求参数的个数不同;
2要求参数中至少有一个类型不同;
3要求参数个数相同时,参数类型不同;
④参数个数和类型相同时,要求函数的返回值不同;
20、当一个函数无返回值时,定义它时函数的类型应是_____1__。
①void②任意③int④无
21、重载函数在调用时选择的依据中,错误的是_4_______。
① 参数个数 ② 参数的类型
③ 参数的位置 ④ 函数的返回值类型
22、有关构造函数的说法不正确的是____4___。
1构造函数的名字和类的名字一样;
2构造函数在说明类的对象时自动执行;
3构造函数无任何函数类型;
4构造函数有且仅有一个;
23、下列的___4_是函数的引用调用。
1形参是指针,实参是地址值;
2形参是变量,实参是引用;
3形参是指针,实参是数组名;
④形参是引用,实参是变量;
24、在一个被调用函数中,关于return语句使用的描述,___4__是错误的。
1被调用函数中可以不用return语句;
2被调用函数中可以使用多个return语句;
3被调用函数中,如果有返回值,就一定要有return语句;
4被调用函数中,一个return语句可返回多个值给调用函数;
25、在C++中,关于下列设置参数默认值的描述中,__3____是正确的。
1不允许设置参数的默认值;
2设置参数默认值只能在定义函数时设置;
3设置参数默认值时,应该是先设置右边的再设置左边的;
4设置参数默认值时,应该全部参数都设置;
26、关于new运算符的下列描述中,___4___是错误的。
1它可以用来动态创建对象和对象数组;
2使用它创建的对象和对象数组可以使用运算符delete删除;
3使用它创建对象时要调用构造函数;
④使用它创建对象数组时必须指定初始值;
27、运算符*的功能是___3___。
1用来表示指向对象指针对指向类成员指针的操作;
2用来表示对象对指向类成员指针的操作;
3用来表示指向对象指针对类成员的操作;
④用来表示对象对类成员的操作;
28、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用___1__合适。
①内联函数②重载函数
③递归函数④嵌套调用
29、采用函数重载的目的在于____4__。
①实现共享②减少空间
③提高速度④使用方便,提高可读性
30、下列函数中,___3__不能重载。
① 成员函数 ② 非成员函数
③ 析构函数 ④ 构造函数
31、在下列关键字中,用以说明类中公有成员的是_1____。
①public②private③protected④friend
32、有关类和对象的说法下列不正确的有_3______。
1对象是类的一个实例;
2任何一个对象只能属于一个具体的类;
3一个类只能有一个对象;
4类与对象的关系和数据类型与变量的关系相似;
33、在下列关于标准输入流的描述中,正确的是_3_____。
1流提取运算符不能自动识别变量的类型,所以要用输入格式控制串;
2变量和流提取运算符一起使用时,要象scanf函数那样在变量前加上&;
3cin与流提取运算符”>>”一起,将从键盘输入的数送到变量中保存起来;
4使用标准输入流,必须包含头文件”stdlib.h”;
34、_3____是构造函数的特征。
1构造函数的函数名与类名不同;
2一个类中只能定义一个构造函数;
3构造函数可以设置缺省参数;
4构造函数必须指定类型说明;
35、C++语言中规定函数的返回值的类型是由____4___。
1return语句中的表达式类型所决定;
2调用该函数的主调用函数类型决定;
3调用该函数时系统临时决定;
④在定义该函数时所指定的函数类型所决定;
36、下列对派生类的描述中,____2__是错的。
1一个派生类可以作为另一个派生类的基类;
2派生类中继承的基类成员的访问权限到派生类保持不变;
3派生类的成员除了它自己的成员外,还包含了它的基类的成员;
4派生类至少有一个基类;
37、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化___4__。
① 与虚基类下面的派生类个数有关; ② 多次;
③ 二次; ④ 一次;
38、关于继承中出现的二义性的描述中,____3__是错的。
1一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性;
2解决二义性的最常用的方法是对成员名的限定法;
3在单继承情况下,派生类中对基类成员的访问也会出现二义性;
4一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性;
39、已知f1()是类A的公有成员函数,p是指向成员函数f1()的指针,采用___3__是正确的。
① p=f1;②p=A:
:
f1;
③p=A:
:
f1();④p=f1();
40、关于动态联编的下列描述中,____4__是错误的。
1动态联编是以虚函数为基础的;
2动态联编是在运行时确定所调用的函数代码的;
3动态联编调用函数操作是用指向对象的指针或对象引用;
④动态联编是在编译时确定操作函数的;
41、下面是面向对象程序设计的特点,而___3___不是的。
①多态性 ②封装性
③隐藏性④继承性
42、关于成员函数特征的下述描述中,___1__是错误的。
①成员函数一定是内联函数;
②成员函数可以重载;
③成员函数可以设置参数的缺省值;
④成员函数可以是静态的。
43、关于delete运算符的下列描述中,____3_是错的。
①它必须用于new返回的指针;
②它也适用于空指针;
③对一个指针可以使用多次该运算符;
④指针名前只用一对方括号,不管所删除数组的维数。
44、设置虚基类的目的是____2_。
① 简化程序; ② 消除二义性;
③ 提高运行效率; ④ 减少目标代码;
45、下列运算符中,____1_运算符在C++中不能重载。
① ?
:
②+ ③new ④<=
46、下列关于运算符重载的描述中,4_____是正确的。
1运算符重载可以改变运算数的个数;
2运算符重载可以改变优先级;
3运算符重载可以改变结合性;
④运算符重载不可以改变语法结构;
47、如果一个类至少有一个纯虚函数,那么就称该类为____1_。
① 抽象类 ② 虚基类
③ 派生类 ④ 以上都不对
48、对基类和派生类的关系描述中,_2____是错误的。
①派生类是基类的具体化;
②派生类是基类的子集;
③派生类是基类定义的延续;
④派生类是基类的组合;
49、已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,___1_是正确的。
①voidprint()const②constvoidprint()
③voidconstprint()④voidprint(const)
50、派生类的对象对它的基类成员中,__1___是可以访问的。
①公有继承的公有成员; ②公有继承的私有成员;
③公有继承的保护成员; ④私有继承的公有成员。
四、简答题
1、什么叫做静态成员函数?
它有何特点?
2、在继承体制中,试分析基类中某成员函数是虚函数与不是虚函数有何不同?
3、试解释纯虚函数与函数体为空的虚函数的相似及不同之处。
4、为什么说C++中的运算符<<和>>是重载的运算符?
5、什么是动态联编?
在什么情况下可以实现动态联编?
6、拷贝初始化构造函数是一特殊的成员函数,在什么情况下系统会自动调用它?
7、多继承下,可能造成对基类中某个成员访问的不唯一性,称为对基类成员访问的二义性问题。
试举例说明,多继承时,在什么情况下会产生二义性?
8、如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生多少个相应的静态变量?
9、派生类的对象可以赋给基类对象,反过来行吗?
为什么?
10、构造函数可以是虚函数吗?
试说明。
五、写出下列程序的运行结果
1、#include"iostream.h"
classA
{public:
A(inti=0)
{m=i;
cout<<"Constructorcalled."<}
voidset(inti){m=i;}
voidprint()const
{cout<~A(){cout<<"Destructorcalled."<private:
intm;
};
voidfun(constA&c)
{c.print();}
voidmain()
{fun(5);}
答案:
Constructorcalled.5
5
deconstructorcalled
1修饰参数的const,如voidfun0(consta*a);voidfun1(c