C++ :第二部分
、选择题
1下列对派生类的描述中,
(
4 )是错误的。
① 一个派生类可以作为另一个派生类的基类 ② 派生类至少有一个基类
① 派生类的成员除了它自已的成员外,还包含了它的基类的成员 ② 派生类中继承的基类成员的访问权限在派生类中保持不变 2、 对基类和派生类的描述中, (
①
③ 派生类是基类定义的延续 3、
表中,不能包含(
① 基类的构造函数 4、
5、 关于子类型的描述中,(
② 派生类中子对象的初始化 设置虚基类的目的是( 2 )。
①简化程序②消除二义性 ③提高运行效率 ④减少目标代码
4 )是错的。
① 子类型就是指派生类是基类的子类型
② 一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型 ③ 在公有继承下,派生类是基类的子类型 ④ 子类型关系是不可逆的 6、 已知一个类 A,( 3
)是指向类A成员函数的指针。假设类 A有3个公有成员:
Void f1(int),void f2(int)和 int a。 ① A *p ; 正确的 ① p= f1;
① a1.p=5; void Set(A&a)
其中,A&a的含意是(3 )。 ① 指向类A的指针为a ② 将A的地址值赋给变量 Set ③ a是类A的对象的引用,用来作函数 10、 有以下类的说明,请指出错误的地方 private:
Set()的形参
ABCD class CSample {
④ 变量A与a按位相与作为函数 Set()的参数
② p = A::f1 ; )是正确的。 ② a1->p=5;
③ a1.*p=5 ;
④ *a1.p=5 ;
③ p= A::f1();
④ p= f1();
8已知:p是一个指向类 A数据成员m的指针,a1是类A的一个对象。如果要给 m赋值 为5, ( 3
② int A::*pc=&A::a ;
③ void A::*pa();
④ A *pp ;
2 )是
③ 基类的子对象初始化④派生类中一般数据成员的初始化
4 )是错的。
派生类是基类的具体化 ②派生类是基类的子集 ④派生类是基类的组合
派生类的构造函数的成员初始化列2
)。
7、 已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用(
9、 已知类A中一个成员函数说明如下:
int a=2.5; (A)
CSample; public:
CSample(int val); ~CSample; };
11、下面程序的输出结果是(
#include viostream> using namespace std; class point { public:
(C) (D)
(B)
1 )
void poi(int px=10,int py=10) { x=px; y=py;} getpx() { return x;} getpy() { return y;} private:
int x,y; };
int main() {
point p,q; p. poi(); q. poi(15,15);
coutvv “ p 点的坐标是:” vvp.getpx( )vv “,”; coutvvp.getpy( )vvendl ; coutvv “q 点的坐标是:” vvq.getpx( )vv “,”; coutvvq.getpy( )vvendl ; return 0; }
①p点的坐标是:
10,10 ② p点的坐标是: 0,0 q点的坐标是: 15,15
q点的坐标是: 15,15
个常量指针 而不能被赋值
③ p点的坐标是: 0,0 ④
p点的坐标是: 10,10 q点的坐标是: 10,10
)是错误的。
② 对象数组的数组名是-
④ 对象数组只能赋初值,
p。 ④ int *p[] )。
q点的坐标是: 0,0
12下列关于对象数组的描述中, (4
① 对象数组的下标是从 0开始的
② 对象数组的每个元素是同一个类的对象
2 )是定乂指向数组的指针 ② int (*p)[5]
13、下列定乂中,(
① int *p[5]
③(int *)p[5]
2
14、具有转换函数功能的构造函数,应该是(
①不带参数的构造函数 ③带有两个以上参数的构造函数 15、关于多继承二义性的描述中,
(
②带有一个参数的构造函数 ④默认构造函数 3 )是错的。
① 一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出 现二义性
② 解决二义性的最常用的方法是对成员名的限定法 ③ 基类和派生类中同时出现的同名函数,也存在二义性问题
④ 一个派生类是从两个基类派生来的,而这两个基类又有一个共同点基类,对该基类 成员进行访问时,有可能存在二义性 16、下列关于运算符重载的描述中,
(
)是正确的。
②运算符重载可以改变优先级
①运算符重载可以改变操作数的个数
④运算符重载不可以改变语法结构 ③运算符重载可以改变结合性 /17、关于动态联编的下列描述中, (
是错误的。
动态联编是一虚函数我基础的
① 动态联编是在运行时确定所调用的函数代码的 动态联编调用函数操作是用指向对② 象的指针或对象引用 动态联编是在编译时确定操作函数的 ③ (3 )是正确的。 个static类型的成员函数 18关于虚函数的描述中, 、
①虚函数是一个static类型的成员函数
④
②虚函数是
②虚函数是一个非成员函数
③ 基类中说明了虚函数后,派生类中其对应的函数可不必说明为虚函数
④ 派生类的虚函数与基类的虚函数具有不同的参数个数和类型 下列描述中,(4 )19是抽象类的特性。 、
① 可以说明虚函数
② 可以进行构造函数重载
③ 可以定义友元函数 ④ 不能说明其对象
20、在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规 则(1
1
)。
③ 部分相同,部分不同
④ 以上都不对
① 完全相同 ② 完全不同 都必须定义自己的版本。 ①虚析构函数
②虚构造函数
③纯虚函数
④静态成员函数
1
)。
21、( 3 )是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类
22、如果一个类至少有一个纯虚函数,那么就称该类为(
①抽象类 ②虚基类 ③派生类 ④以上都不对 二、判断题
1、 一个类的构造函数中可以不包含对其子对象的初始化。 2、 派生类是从基类派生出来,它不能再生成新的派生类。
( T ) (F
)
( F )
3、 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。 4、 单继承情况下,派生类中对基类成员的访问也会出现二义性。 5、 构造函数可以被继承。(T ) 6、 析构函数不能被继承。(F )
7、 解决多继承情况下出现二义性的方法之一是使用成员名限定法。 &子类型是不可逆的。(F ) 9、派生类是它的基类的组合。
(F )
( F )
( T )
C++期末热身第二部分



