3-5.对于一个类的构造函数,其函数名与类名( A )。 A.完全相同 B.基本相同 C.不相同 D.无关系 3-6.每个类( C )构造函数。
A.只能有一个 B.可以有公用的 C.可以有多个 D.只可有缺省的
3-7.对类对象成员的初始化是通过构造函数中给出的( B )实现的。
A.函数体 B.参数初始化表 C.参数表 D.参数初始化表或函数体
3-8.假定AB为一个类,则执行“AB x;”语句时将自动调用该类的 ( B ).。
A.有参构造函数 B.无参构造函数 C.复制构造函数 D.赋值重载函数 3-9.假定AB为一个类,则执行 “AB x(a,5);”语句时将自动调用该类的 ( A )。
A. 带参构造函数 B. 无参构造函数 C. 复制构造函数 D. 赋值重载函数
3-10.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的( B )。
A.有参构造函数 B.无参构造函数 C.复制构造函数 D.赋值构造函数
3-11.构造函数不具备的特征是( D )。
A.构造函数的函数名与类名相同 B.构造函数可以重载
C.构造函数可以设置默认参数 D.构造函数必须指定类型说明
3-12.假定一个类的构造函数为 “B(int ax, int bx): a(ax), b(bx) {}”,执行 “B x(1,2),y(3,4);x=y;”语句序列后x.a的值为( C )。
A.1 B.2 C.3 D.4
3-13.假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行 “A x(4,5);”语句后,x.a和x.b的值分别为( C )
A. 4和5 B. 5和4 C. 4和20 D. 20和5
3-14.假定一个类的构造函数为 “A(int aa=1, int bb=0) {a=aa; b=bb;}”,则执行 “A x(4);”语句后,x.a和x.b的值分别为( D )。
A. 1和0 B. 1和4 C. 4和1 D. 4和0
- 6 -
3-15.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为( C )。
A. AB() {} B. AB(): a(0){} C. AB(int aa=0) {a=aa;} D. AB(int aa) {}
3-16.类的析构函数是一个对象被( B )时自动调用的。 A. 建立 B. 撤消 C. 赋值 D. 引用 3-17.能够释放对象所占资源的是( A )。 A. 析构函数 B. 数据成员 C. 构造函数 D. 静态成员函数 3-18.类的析构函数的作用是( D ).。
A.一般成员函数 B.类的初始化 C.对象的初始化 D.对象释放后的操作 3-19.对于一个类的析构函数,其函数名与类名( C )。 A. 完全相同 B. 完全不同
C. 只相差一个字符 D. 无关系
3-20.一个类的析构函数通常被定义为该类的( C )成员。 A. 私有 B. 保护 C. 公用 D. 友元 3-21.定义析构函数时,应该注意( C )。 A.其名与类名完全相同 B.返回类型是void类型 C.无形参,也不可重载 D.函数体中必须有delete语句
3-22.类的析构函数可以带有( A )个参数。 A. 0 B. 1 C. 2 D. 任意
3-23.类的析构函数是在( C )调用的。
A.类创建时 B.创建对象时 C.对象生命期结束时 D.不自动调用
3-24.当一个类对象离开它的作用域时,系统自动调用该类的( D )。
A. 无参构造函数 B. 带参构造函数 C. 拷贝构造函数 D. 析构函数
3-25.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( C )。 A. 0 B. 1 C. n D. n-1
3-26.假定AB为一个类,则执行 “AB a[10];”语句时调用该类无参构造函数的次数为( D )。 A. 0 B. 1 C. 9 D. 10
3-27.假定AA是一个类,abc是该类的一个成员函数,则参数
- 7 -
表中隐含的第一个参数的类型为( D )。 A. int B. char C. AA D. AA*
3-28.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为( C )。
A. abc B. *this C. this D. this&
3-29.假定AB为一个类,则执行 “AB *px=new AB[n];”语句时将( A )。
A. 动态分配一个数组 B. 动态分配一个对象 C. 静态分配一个数组 D. 静态分配一个对象
3-30.设px是指向一个类对象的指针变量,则执行 “delete px;”语句时,将自动调用该类的( C )
A. 无参构造函数 B. 带参构造函数 C. 析构函数 D. 复制构造函数
3-31.对于在类中定义的静态数据成员,下面正确的说法是( C )。
A.该类的每一个对象中都有一个静态数据成员 B.对象创建时产生 C.在类外进行初始化
D.既可以在类外初始化,也可以在类内初始化 3-32.一个类的静态数据成员所表示属性 ( C )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性 3-33.类的静态成员的访问控制( D )。 A. 只允许被定义为private
B. 只允许被定义为private或protected C. 只允许被定义为public
D. 可允许被定义为private、protected或public 3-34.静态成员函数对类的数据成员访问( B )。 A. 是不允许的 B. 只允许是静态数据成员
C. 只允许是非静态数据成员
D. 可允许是静态数据成员或非静态数据成员
3-35.被非静态成员函数访问的类的数据成员( A )。 A. 可以是非静态数据成员或静态数据成员 B. 不可能是类的静态数据成员
C. 只能是类的非静态数据成员
D. 只能是类的静态数据成员
3-36.静态数据成员的初始化是在( D )中进行的。
- 8 -
A. 构造函数 B. 任何成员函数 C. 所属类 D. 全局区 3-37.由于数据隐藏的需要,静态数据成员通常被说明为( A )。
A.私有的 B.公用的 C.保护的 D.不可访问的
3-38.复制构造函数的参数通常是( C )。
A.无特殊要求 B.指向对象的指针
C.自己类对象的常引用 D.对象
3-39.通常,复制构造函数的参数是( C )。
A.某个对象名 B.某个对象的成员
C.某个对象的引用名 D.某个对象的引用名
3-40.关于常成员的描述中,错误的是( B )。 A.常成员包括常数据成员和常成员函数两种 B.常数据成员必须是公用的
C.常数据成员要使用构造函数成员初始化列表进行初始化 D.常对象只能调用它的常成员函数,不能调用其它的成员函
数
3-41.引入友元的主要目的是为了( C )。 A. 增强数据安全性 B. 提高程序的可靠性
C. 提高程序的效率和灵活性 D. 保证类的封装性
3-42.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明( A )。
A. 需加上类域的限定 B. 不需加上类域的限定
C. 类域的限定可加可不加 D. 不需要任何限定
3-43.类成员的访问权限中,( C )只能被本类的成员函数和其友元函数访问。
A.share B.public C.private D.protected
3-44.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( D )。
- 9 -
A. 只能是公有成员 B. 只能是保护成员
C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员
3-45.下面不是描述类的成员函数的是( C )。
A.构造函数 B.析构函数 C.友元函数 D.复制构造函数 3-46. 下列函数中,( C )不是类的成员函数。
A.构造函数 B.析构函数 C.友元函数 D.复制构造函数
3-47.如果类A被说明成类B的友元,则( D )。
A.类A的成员即类B的成员 B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员 D.类B不一定是类A的友元
4-1.关于运算符重载,下列说法正确的是( C )。 A. 重载时,运算符的优先级可以改变。 B. 重载时,运算符的结合性可以改变。 C. 重载时,运算符的功能可以改变。
D. 重载时,运算符的操作数个数可以改变。
4-2.下列关于运算符重载的描述中,错误的是( B )。 A.运算符重载不可以改变操作数的个数 B.运算符重载不可以改变运算符的功能 C.运算符重载不可以改变结合方向 D.运算符重载不可以改变运算优先级
4-3.关于运算符重载,下列说法正确的是( B )。
A.所有运算符都可以重载
B.通过重载,可以使运算符应用于自定义的数据类型 C.通过重载,可以创建原来没有的运算符号 D.通过重载,可以改变运算符的优先级
4-4.在一个类中可以对一个运算符进行( D )重载。 A.1种 B.2种以下 C.3种以上 D.多种
4-5.不能参与重载的运算符是( A )。
A.类 B.函数 C.函数模板 D.运算符
4-6.在重载一个运算符时,其参数表中没有任何参数,这表明该
- 10 -