2-31
以下说法中正确的是 (2分)
- 一个类一定会有无参构造函数
- 构造函数的返回值类型是void
- 一个类只能定义一个析构函数,但可以定义多个构造函数
- 一个类只能定义一个构造函数,但可以定义多个析构函数
正确答案:C
A.一个类没有无参构造函数,那它有有参的构造函数。
B.构造函数在创建对象时调用构造方法对返回类型没有选择权,也就是说不加任何返回修饰符,以示与其他的方法的区别。void表示我可以控制它返回类型,就是不让它返回,为空类型,显然有选择权了。
D.一个类可以定义多个构造函数,用函数重载来实现。2-32
以下说法正确的是()。 (2分)
- 在静态成员函数中可以调用同类的其他任何成员函数
- const成员函数不能作用于非const对象
- 在静态成员函数中不能使用this指针
- 静态成员变量每个对象有各自的一份
正确答案:C
A.在静态成员函数可以调用其它静态函数成员和静态数据成员
B.const成员函数不能作用于非const对象。
D.静态成员变量每个对象共用一份。
2-33
以下关于this指针的说法不正确的是() (2分)
- const成员函数内部不可以使用this指针
- 成员函数内的this指针指向成员函数所作用的对象
- 在构造函数内部可以使用this指针
- 在析构函数内部可以使用this指针
正确答案:A
解析:
const成员函数内部可以使用this指针。
2-34
关于成员函数特征的描述中,( )是错误的。 (2分)
- 成员函数可以重载
- 成员函数一定是内联函数
- 一个类可以没有成员函数
- 成员函数可以设置参数的默认值
正确答案:B
解析:
成员函数不一定是内联函数
2-35
设类AA已定义,假设以下语句全部合法,哪些语句会触发调用构造函数( )。 (2分)
AA a; //1
AA b(12, 10); //2
AA c(b); //3
a.SetX(32); //4
- 1 和 2
- 1、2 和 3
- 全部
- 1
正确答案:C
2-36
下列关于构造函数的描述中,错误的是() (2分)
- 构造函数名与类名相同
- 构造函数可以有返回值
- 构造函数可以重载
- 每个类都有构造函数
正确答案:B
解析;
构造函数没有返回值
2-37
对类的构造函数和析构函数描述正确的是 (2分)
- 构造函数可以重载,析构函数不能重载
- 构造函数不能重载,析构函数可以重载
- 构造函数可以重载,析构函数也可以重载
- 构造函数不能重载,析构函数也不能重载
正确答案:A
2-38
下面程序的运行结果为 (2分)
#include<iostream.h>
class A
{
int num;
public:
A(int i){num=i;}
A(A &a){num=a.num++;}
void print(){cout<<num;}
};
void main()
{
A a (1),b(a);
a.print();
b.print();
}
- 11
- 12
- 21
- 22
正确答案:C
2-39
类的析构函数是在什么时候调用的? (2分)
- 类创建时
- 创建对象时
- 删除对象时
- 不自动调用
正确答案:C
2-40
下列关于构造函数说法不正确的是 (2分)
- 构造函数必须与类同名
- 构造函数可以省略不写
- 构造函数必须有返回值
- 在构造函数中可以对类中的成员进行初始化
正确答案:C
解析:
构造函数没有返回值。
2-41
下列关于构造函数的描述中,错误的是() (2分)
- 构造函数可以设置默认参数;
- 构造函数在定义类对象时自动执行
- 构造函数可以是内联函数;
- 构造函数不可以重载
正确答案:D
解析;
构造函数不可以重载。
2-42
C++函数的声明和定义可以分开。函数声明不需要( )。 (2分)
- 返回类型
- 函数名
- 参数表
- 函数体
正确答案:D
2-43
private访问属性限制对象的成员可以在( ) 中访问。 (2分)
- 本类的成员函数
- main函数
- 父类的成员函数
- 子类的成员函数
正确答案:A
2-44
下列特性中,C与C++共有的是( ) (2分)
- 继承
- 封装
- 多态性
- 函数定义不能嵌套
正确答案:D
2-45
一般情况下,将( )函数说明为内联函数。 (2分)
- 函数的代码量小,调用次数少
- 函数的代码量小,调用次数多
- 函数的代码量大,调用次数少
- 函数的代码量大,调用次数多
正确答案:B
解析:
内联函数的原理是编译器将使用相应的函数代码替换函数调用。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。
2-46
不能作为函数重载判断依据的是( ) (2分)
- 返回类型
- const
- 参数个数
- 参数类型
正确答案:A
解析:
编译器无法根据返回类型 来调用函数。
2-47
下面关于new运算符的描述中错误的是( ) (2分)
- 使用new创建对象时必须定义初始值
- 使用new创建对象时会调用类的构造函数
- new可以用来动态创建对象和对象数组
- 使用new创建的对象可以使用delete删除
正确答案:A
解析:
使用new创建对象时,若类有默认的构造函数或没有构造函数,则不需要初始化值;若类只有含参的构造函数,则需要初始化值。
2-48
在C++中用类将数据和对数据操作的代码连接在一起称为( ) (2分)
- 软件重用
- 封装
- 集合
- 多态
正确答案:
2-49
不属于类的成员函数的是( ) 。 (2分)
- 构造函数
- 析构函数
- 友元函数
- 复制构造函数
正确答案:C
2-50
在面向对象的程序设计中,首先需要在问题域中识别出若干个( ) (2分)
- 函数
- 类
- 文件
- 过程
正确答案:B
2-51
假设MyClass是一个类,则该类的拷贝初始化构造函数的声明语句为( ) (2分)
- MyClass&(MyClass x);
- MyClass(MyClass x);
- MyClass(MyClass &x);
- MyClass(MyClass *x);
正确答案:C
2-52
对于C++结构体中定义的成员,其隐含的访问权限为( ) (2分)
- public
- protected
- private
- static
正确答案:A
解析:
易错题,题中问的是结构体中成员的访问属性,而不是类中的访问属性。在结构体中,它成员的访问都是没有限制的,所以是公有的。
2-53
为类提供对外接口的是( ) (2分)
- 公有成员函数
- 私有成员函数
- 保护成员函数
- 友元函数
正确答案:A
2-54
对于任意一个类,析构函数的个数最多为( ) (2分)
- 0
- 1
- 2
- 3
正确答案:B
2-55
若类A的构造函数定义为 A(int aa=1, int bb=0) { a = aa; b = bb; } 则执行:A x(4);后,x.a和x.b的值分别是( ) (2分)
- 1,0
- 1,4
- 4,0
- 4,1
正确答案:C
2-56
若类A被说明成类B的友元,则( ) 。 (2分)
- 类A的成员即类B的成员
- 类B的成员即类A的成员
- 类A的成员函数不能访问类B的成员
- 类B不一定是类A的友元
正确答案:D
2-57
已知类A中的一个成员函数说明为void fun(A &a);,则A &a的含义是( ) (2分)
- 将a的地址值赋给变量fun
- 指向类A的指针为a
- a是类A的对象引用,用来做函数fun()的形参
- 变量A与a按位相与运算后作为函数fun()的参数
正确答案:C
PTA 友元、静态和常类型(二)(选择题解析)
最新推荐文章于 2024-06-11 18:49:00 发布