构造函数与析构函数知识测试

构造函数与析构函数知识测试,第1张

在下列函数原型中,可以作为类AA构造函数的是()

A

void AA(int);

B

int AA( );

C

AA(int) const;

D

AA(int);

答案:D。

题解:定义构造函数不用类型,且不能被const修饰。

2. (单选题, 11分)
关于成员函数特征的下述描述中,()是错误的。

A

成员函数一定是内联函数

B

成员函数可以重载

C

成员函数可以设置参数的默认值

D

成员函数可以是静态的

答案:A。

题解:不一定是。



3. (单选题, 11分)

下列关于构造函数的说法错误的是( )。

A

构造函数的名字必须与类的名字相同

B

构造函数可以定义为void类型

C

构造函数可以重载、可以带有默认参数

D

构造函数可以由用户自定义也可以由系统自动生成

答案:B。

题解:构造函数不能定义为任何类型。

4. (单选题, 11分)

有如下类声明:

class student

{

int age;

char *name;

};

则student类的成员age是(  )。

  • A. 公有数据成员
  • B. 私有数据成员 
  • C. 保护数据成员  
  • D. 私有成员函数

正确答案: B

5. (单选题, 11分)

#include

class point

{

int x,y;

public:

point():x(0),y(0){}

point(int x1,int y1=0):x(x1),y(y1){}

};

若执行语句

point a(2),b[3],*c;

则point类的构造函数被调用的次数是(  )。

  • A. 2次  
  • B. 3次  
  • C. 4次  
  • D. 5次  

我的答案: C正确答案: C

题解:point a(2)调用一次,point b[3]时调用三次,至于指针,

C++中如果声明一个对象指针时没有分配内存,那么不会调用构造函数

6. (单选题, 11分)

有如下程序

#include

using namespace std;

class AA{

      int n;

public:

      AA(int k):n(k){ }

      int get( ){ return n;}

      int get( )const{ return n+1;}

};

int main( )

{

      AA a(5);

      const AA b(6);

      cout<

      return 0;

}

运行该程序结果为(  )。

  • A. 56
  • B. 57
  • C. 67
  • D. 66

正确答案: B

答案解析:

常对象调用常成员函数

7. (单选题, 11分)

运行下列程序结果为____________________。

#include

#include

using namespace std;

class MyClass{

public:

      MyClass(){cout<<'A';}

      MyClass(char c){cout<

      ~MyClass(){cout<<'B';}

};

int main(){

      MyClass p1,*p2;

      p2=new MyClass('X');

      delete p2;

      return 0;

}

执行这个程序幕上将显示输出______。

  • A. ABX
  • B. ABXB
  • C. AXB 
  • D. AXBB

正确答案: D

题解:本题目考核构造函数和析构函数的调用

二. 多选题(共1题,11分) 8. (多选题, 11分)

在下列哪种情况下会调用拷贝构造函数(  )。

  • A. 用一个对象去初始化本类的另一个对象时。

  • B. 函数的形参是类的对象,在进行形参和实参的结合时。

  • C. 函数的返回值是类的对象,函数执行完返回时。

  • D. 将类的一个对象赋值给另一个本类的对象时。

正确答案: ABC

三. 简答题(共1题,11.1分) 9. (简答题, 11.1分)

#include

using namespace std;

class MyClass {

       public:

              int number;

              void set(int i);

};

int number=3;

void MyClass::set (int i){

       number=i;

}

void main( ){

       MyClass my1;

       int number=10;

       my1.set(5);

       cout<

       my1.set(number);

       cout<

       my1.set(::number);

       cout<

}

正确答案:

5

10

3

题解:“::”修饰变量,当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存