1.对一个类中的数据成员的初始化可以通过构造函数中的( )实现,也可以通过构造函数中的( )实现。(初始化表,函数体)
2.假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为( 10)。
3.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为( 缺省构造函数)。
4.设p为指向一个动态对象的指针变量,则执行delete p语句时,将自动调用该类的( 析构函数)
5.若将类A的成员函数“void fun();”定义为一个类B的友元函数,则应在类B的定义中加一条语句:(friend void A::fun(); )
6.this指针是一个隐含的指针,它隐含于每个类的( 非静态成员函数)中
7.构造函数可以有参数,但不可以有返回值。
8.一个类的所有对象都有各自的数据成员,它们共享成员函数。
9.类的静态成员函数的初始化工作要放在类外进行。(这句话是错的)
类的静态成员变量要在类外初始化,函数不需要初始化,函数初始化这种说法都是错
1.作用域运算符的功能是( )。
A 标识作用域的级别 B 指出作用域的范围
C 给定作用域的大小 D 标识某个成员是属于哪个类
2.下列( )不能作为类的成员。
A 自身类对象的指针 B 自身类对象的引用
C 自身类对象 D 另一个类的对象
3.下列静态成员的特性中,( )是错误的。
A 说明静态成员时,要加修饰符static
B 静态数据成员要在类体外进行初始化
C 引用静态数据成员时,要在静态数据成员名前加<类名>及作用域运算符
D 静态数据成员不是所有对象所共用的
4.已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用( )是正确的。
A p=f1 B p=A::f1 C p=A::f1() D p=f1()
5、运算符->*的功能是( )。
A 用来表示指向对象指针对指向类成员指针的操作
B 用来表示对象对指向类成员指针的操作
C 用来表示指向对象指针对类成员的操作
D 用来表示对象类成员的操作
6.设p为一个指向类A数据成员m的指针,A1为A的一个对象。如果给m赋值5,( )为正确的。
A A1.p=5 B A1->p=5 C A1.*p=5 D *A1.p=5
7、已知print( ) 函数是一个类的常成员函数,它无返回值。下列表示中,( )是正确的。
A void print ( ) const B const void print ( )
8.对于 int * pa[5]; 的描述,( )是正确的。
A pa是一个指向数组的指针,所指向的数组是5个int型元素。
B pa是一个指向某数组中第5个元素的指针,该元素是int型变量。
C pa[5]表示某个数组的第5个元素的值。
D pa是一个具有5个元素的指针数组,每个元素是一个int型指针。
9、 设置虚基类的目的是( )。
A 简化程序 B 消除二义性 C 提高运行效率 D 减少目标代码
10、 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚函数的子对象初始化( )。
A 与虚基类下的派生类个数有关 B 多次 C 二次 D 一次
11.下列关于抽象类的使用中,( )是错误的。
A 可以定义抽象类的对象 B 可以定义抽象类的指针
C 可以定义抽象类的引用 D 可以定义抽象类的派生类
12.派生类的构造函数的成员初始化列表中,不能包含( )。
A 基类的构造函数
B 派生类中子对象的初始化
C 基类的子对象的初始化
D 派生类中一般数据成员的初始化
13.关于new运算符的下列描述中,( )是错的。
A 它可以用来动态创建对象和对象数组;
B 使用它创建的对象或对象数组可以使用delete运算符删除;
C 使用它创建对象时要调用构造函数;
D 使用它创建对象数组时,必须指定初始值。
在通常情况下,复制构造函数的参数是( )。
A. 某个对象的引用名
B. 某个对象名
C. 某个对象的成员名
D. 某个对象指针名