PTA 友元、静态和常类型(二)(选择题解析)

2-31

以下说法中正确的是 (2分)

  1. 一个类一定会有无参构造函数
  2. 构造函数的返回值类型是void
  3. 一个类只能定义一个析构函数,但可以定义多个构造函数
  4. 一个类只能定义一个构造函数,但可以定义多个析构函数

正确答案:C

A.一个类没有无参构造函数,那它有有参的构造函数。

B.构造函数在创建对象时调用构造方法对返回类型没有选择权,也就是说不加任何返回修饰符,以示与其他的方法的区别。void表示我可以控制它返回类型,就是不让它返回,为空类型,显然有选择权了。
D.一个类可以定义多个构造函数,用函数重载来实现。

2-32

以下说法正确的是()。 (2分)

  1. 在静态成员函数中可以调用同类的其他任何成员函数
  2. const成员函数不能作用于非const对象
  3. 在静态成员函数中不能使用this指针
  4. 静态成员变量每个对象有各自的一份

正确答案:C

A.在静态成员函数可以调用其它静态函数成员和静态数据成员

B.const成员函数不能作用于非const对象。

D.静态成员变量每个对象共用一份。

2-33

以下关于this指针的说法不正确的是() (2分)

  1. const成员函数内部不可以使用this指针
  2. 成员函数内的this指针指向成员函数所作用的对象
  3. 在构造函数内部可以使用this指针
  4. 在析构函数内部可以使用this指针

正确答案:A

解析:

const成员函数内部可以使用this指针。

2-34

关于成员函数特征的描述中,( )是错误的。 (2分)

  1. 成员函数可以重载
  2. 成员函数一定是内联函数
  3. 一个类可以没有成员函数
  4. 成员函数可以设置参数的默认值

正确答案:B

解析:

成员函数不一定是内联函数

2-35

设类AA已定义,假设以下语句全部合法,哪些语句会触发调用构造函数( )。 (2分)

AA a; //1

AA b(12, 10); //2

AA c(b); //3

a.SetX(32); //4

  1. 1 和 2
  2. 1、2 和 3
  3. 全部
  4. 1

正确答案:C

2-36

下列关于构造函数的描述中,错误的是() (2分)

  1. 构造函数名与类名相同
  2. 构造函数可以有返回值
  3. 构造函数可以重载
  4. 每个类都有构造函数

正确答案:B

解析;

构造函数没有返回值

2-37

对类的构造函数和析构函数描述正确的是 (2分)

  1. 构造函数可以重载,析构函数不能重载
  2. 构造函数不能重载,析构函数可以重载
  3. 构造函数可以重载,析构函数也可以重载
  4. 构造函数不能重载,析构函数也不能重载

正确答案: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();

}

  1. 11
  2. 12
  3. 21
  4. 22

正确答案:C

2-39

类的析构函数是在什么时候调用的? (2分)

  1. 类创建时
  2. 创建对象时
  3. 删除对象时
  4. 不自动调用

正确答案:C

2-40

下列关于构造函数说法不正确的是 (2分)

  1. 构造函数必须与类同名
  2. 构造函数可以省略不写
  3. 构造函数必须有返回值
  4. 在构造函数中可以对类中的成员进行初始化

正确答案:C

解析:

构造函数没有返回值。

2-41

下列关于构造函数的描述中,错误的是() (2分)

  1. 构造函数可以设置默认参数;  
  2. 构造函数在定义类对象时自动执行  
  3. 构造函数可以是内联函数; 
  4. 构造函数不可以重载

正确答案:D

解析;

构造函数不可以重载。

2-42

C++函数的声明和定义可以分开。函数声明不需要( )。 (2分)

  1. 返回类型
  2. 函数名
  3. 参数表
  4. 函数体

正确答案:D

2-43

private访问属性限制对象的成员可以在( ) 中访问。 (2分)

  1. 本类的成员函数
  2. main函数
  3. 父类的成员函数
  4. 子类的成员函数

正确答案:A

2-44

下列特性中,C与C++共有的是( ) (2分)

  1. 继承
  2. 封装
  3. 多态性
  4. 函数定义不能嵌套

正确答案:D

2-45

一般情况下,将( )函数说明为内联函数。 (2分)

  1. 函数的代码量小,调用次数少
  2. 函数的代码量小,调用次数多
  3. 函数的代码量大,调用次数少
  4. 函数的代码量大,调用次数多

正确答案:B

解析:

内联函数的原理是编译器将使用相应的函数代码替换函数调用。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。

2-46

不能作为函数重载判断依据的是( ) (2分)

  1. 返回类型
  2. const
  3. 参数个数
  4. 参数类型

正确答案:A

解析:

编译器无法根据返回类型 来调用函数。

2-47

下面关于new运算符的描述中错误的是( ) (2分)

  1. 使用new创建对象时必须定义初始值
  2. 使用new创建对象时会调用类的构造函数
  3. new可以用来动态创建对象和对象数组
  4. 使用new创建的对象可以使用delete删除

正确答案:A

解析:

使用new创建对象时,若类有默认的构造函数或没有构造函数,则不需要初始化值;若类只有含参的构造函数,则需要初始化值。

2-48

在C++中用类将数据和对数据操作的代码连接在一起称为( ) (2分)

  1. 软件重用
  2. 封装
  3. 集合
  4. 多态

正确答案:

2-49

不属于类的成员函数的是( ) 。 (2分)

  1. 构造函数
  2. 析构函数
  3. 友元函数
  4. 复制构造函数

正确答案:C

2-50

在面向对象的程序设计中,首先需要在问题域中识别出若干个( ) (2分)

  1. 函数
  2. 文件
  3. 过程

正确答案:B

2-51

假设MyClass是一个类,则该类的拷贝初始化构造函数的声明语句为( ) (2分)

  1. MyClass&(MyClass x);
  2. MyClass(MyClass x);
  3. MyClass(MyClass &x);
  4. MyClass(MyClass *x);

正确答案:C

2-52

对于C++结构体中定义的成员,其隐含的访问权限为( ) (2分)

  1. public
  2. protected
  3. private
  4. static

正确答案:A

解析:

易错题,题中问的是结构体中成员的访问属性,而不是类中的访问属性。在结构体中,它成员的访问都是没有限制的,所以是公有的。

2-53

为类提供对外接口的是( ) (2分)

  1. 公有成员函数
  2. 私有成员函数
  3. 保护成员函数
  4. 友元函数

正确答案:A

2-54

对于任意一个类,析构函数的个数最多为( ) (2分)

  1. 0
  2. 1
  3. 2
  4. 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. 1,0
  2. 1,4
  3. 4,0
  4. 4,1

正确答案:C

2-56

若类A被说明成类B的友元,则( ) 。 (2分)

  1. 类A的成员即类B的成员
  2. 类B的成员即类A的成员
  3. 类A的成员函数不能访问类B的成员
  4. 类B不一定是类A的友元

正确答案:D

2-57

已知类A中的一个成员函数说明为void fun(A &a);,则A &a的含义是( ) (2分)

  1. 将a的地址值赋给变量fun
  2. 指向类A的指针为a
  3. a是类A的对象引用,用来做函数fun()的形参
  4. 变量A与a按位相与运算后作为函数fun()的参数

正确答案:C

  • 12
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值