C++期末复习
1、虚函数________。 A、可实现静态多态性
B、既可实现静态多态性,又可实现动态多态性 C、不能实现多态性 D、可实现动态多态性 答案:D
2、类中定义的成员,其隐含访问权限为________。 A、public B、private C、static D、protected 答案:B
3、以下有关对象的叙述中,不正确的是________。 A、撤消对象时必定要调用析构函数 B、对象被保护,其私有成员不能任意访问 C、产生对象时必定要调用构造函数 D、对象可以没有构造函数或析构函数 答案:D
4、下列说法中不正确的是________。
A、类与对象间的关系和数据类型与变量间的关系相类似 B、对象是类的一个实例 C、一个类只能有一个对象 D、任何一个对象只能属于一个类 答案:C
5、下列说法正确的是________。
A、一个类的构造函数可以对它的间接基类的构造函数传递实参。
B、多重继承中基类构造函数的调用顺序与初始化成员列表中构造函数顺序完全相同。 C、派生类的初始化成员列表可以为空。
D、如果派生类包含对象成员,则编译器调用构造函数的顺序为:对象成员、基类、派生类。 答案:C
6、下列说法中不正确的是________。
A、一个对象数组中的所有数组元素属于同一个类
B、当在类的外部定义成员函数时,必须在函数名前加上类名和作用域运算符”::” C、同一个类的两个对象占用相同的内存空间 D、要在类的外部直接使用类中的私有成员是错误的 答案:C
7、类的析构函数的作用是________。 A、对象的初始化 B、删除对象 C、类的初始化 D、一般成员函数 答案:B
8、以下有关静态数据成员的描述正确的是________。 A、静态数据成员不能被成员函数调用 B、静态数据成员为该类所有对象所共有 C、静态数据成员要在构造函数内初始化 D、静态数据成员必须为公有的 答案:B
9、关于成员函数的定义和使用,下面的说明________是错误的。 A、必须通过对象调用成员函数 B、成员函数可以定义在类外
C、只有成员函数能访问类的数据成员 D、成员函数内可以访问类的所有数据成员 答案:C
10、以下说法不正确的是________。
A、在类的定义体中,决定成员访问权限的关键字private、public和protected在类体内出现的次序是一定的,且只能出现一次 B、类的公有成员函数是类与外界的接口 C、在类中不能对所定义的数据成员进行初始化 D、类的实现机制实现了数据隐藏 答案:A
11、一个类的静态数据成员所表示的属性________。 A、仅是该类对象的属性 B、是该类或该类对象的属性 C、是该类和该类友元的属性 D、仅是该类的属性 答案:D
12、下列叙述中不正确的是________。 A、含纯虚函数的类为抽象类 B、抽象类不能作为派生类的基类 C、纯虚函数没有其函数的实现部分 D、不能直接由抽象类建立对象 答案:B
13、下列说明有关构造函数的正确说法是________。 A、可定义没有构造函数的类 B、构造函数不能重载 C、任一类必定有构造函数 D、任一类必定有缺省的构造函数 答案:C
14、设类B是基类A的派生类,并有语句”A al,*pa=&a1;B b1,*pb=&b1; ”,则正确的语句是________。 A、a1=b1; B、pb=pa; C、*pb=*pa; D、b1=a1; 答案:A
15、假定AB为一个类,则该类的拷贝构造函数的声明语句为________。 A、AB(AB* x);
B、AB(AB x); C、AB&(AB x); D、AB(AB&); 答案:D
16、对于一个C++的类,________。 A、可有多个构造函数和一个析构函数 B、只能有一个构造函数和一个析构函数 C、可有多个构造函数和多个析构函数 D、可有一个构造函数和多个析构函数 答案:A
17、一个类的析构函数________。 A、只能是缺省的 B、允许重载 C、至多可有两个 D、是唯一的 答案:D
18、下列说法不正确的是________。 A、类实质上是一种数据类型
B、在类中,成员的默认访问权限是私有的 C、类封装了数据和操作
D、在类的定义中,必须包含private、public、protected三种存取方式对应的部分 答案:D
19、下面哪一个不是构造函数的特征________。 A、构造函数没有类型
B、构造函数的函数名与类名相同 C、构造函数不能重载
D、构造函数可以设置缺省参数 答案:C
20、下列有关类的构造函数和析构函数的说法中,不正确的是________。 A、定义一个类时可以不显式的定义析构函数 B、定义一个类时可以不显式的定义构造函数 C、类的构造函数可以重载 D、类的析构函数可以重载 答案:D
21、结构中定义的成员,其隐含访问权限为________。 A、public B、private C、static D、protected 答案:A
22、下列说明中有关结构体定义的正确说法是________。 A、其成员缺省的权限为公有的 B、不能指定其成员的权限 C、不能包含成员函数
D、不能包含对象成员 答案:A
23、以下说法不正确的是________。 A、类中的数据成员不能为指针类型
B、当使用指针变量访问类的成员时,必须先使指针变量指向该类的某个对象 C、程序中可以定义指向某个类的指针变量 D、可以定义指向类中某个数据成员的指针变量 答案:A
24、以下关于运算符重载的叙述正确的是________。 A、运算符重载时可改变其实现的功能 B、C++已有的任何运算符都可以重载 C、可以重载C++中没有的运算符 D、运算符重载时可改变其优先级 答案:A
25、以下关于运行时的多态性的叙述中,不正确的是________。 A、运行时的多态性是在编译时确定其要执行的函数
B、运行时的多态性是在执行过程中根据具体被操作的对象来确定要运行的函数 C、运行时的多态性要通过指向基类的指针来实现 D、运行时的多态性要通过虚函数来实现 答案:A
26、下列有关类和对象的说明中,正确的是________。
A、对象是类的实例,为对象分配存储空间而不为类分配存储空间 B、类与对象没有区别
C、要为类和对象分配存储空间
D、类是对象的实例,为类分配存储空间而不为对象分配存储空间 答案:A
27、若A为某个类的类名,执行语句“A a[5];“后,系统自动调用该类的构造函数的次数为________。5 28、函数重载属于两种多态性中的哪一种:__________。答案:静态多态
29、无论哪一种继承权限,其基类的________成员均不能为派生类所继承。答案:私有
30、已定义类A,该类构造函数的参数都没有缺省值。执行语句:\(*p3)[3]=a3, *p4=new A[3];\后,系统自动调用该类的缺省(无参)构造函数的次数为________。答案:13 30、C++语言提供的__________机制允许一个派生类继承多个基类,即使这些基类是相互无关的。答案:继承
31、 在定义一个类时,缺省的构造函数是唯一的。当自定义的构造函数的每一个参数均有缺省值或__________时,这种构造函数是确省的构造函数。答案:无参
32、设P是指向一个类动态对象的指针变量,则执行语句”delete P;”时,将自动调用该类的______________。答案:析构函数 33、声明虚函数的方法是在基类中的成员函数原型前加上关键字__________,并在派生类中重新实现该成员函数。答案:virtual 34、以下程序输出的第一行是________,第二行是________。 # include
void virtual f(){cout<<\ void virtual g(){cout<<\ };
class A: public X { public:
void f(){cout<<\ };
class B: public A { public:
void f(){cout<<\ void g(int i=0){cout<<\ };
void main(void) {
B b;X *px=&b; px->f();px->g(); }
答案:B::44 B::55
34、下以程序输出的第二行是________,第三行是________。 # include
int x;static int y; public:
E(int a){x=a;y+=x;}
void Show(){cout< int E::y=100; void main(void) { E e1(10); e1.Show(); E e2(50); e2.Show(); e1.Show(); } 答案:50 160 10 160 35、如果类A继承类B,则类A称之为__________,类B称之为__________。 答案:子类 【或】 派生类 基类 【或】 父类 36、以下程序输出的第一行是_____________,第二行是_____________。 #include A(int i, int j){x=i; y=j;} operator++(); operator++(int)