一道c++题

来源:百度知道 编辑:UC知道 时间:2024/06/06 08:11:38
有以下类定义

class MyClass

{

public:

MyClass(){cout<<1;}

};

则执行语句MyClass a, b[2], *p[2];后,程序的输出结果是

A)11 B)111 C)1111 D)11111

为什么答案是b?
b[2],为什么会调用两次

b[2] 是一个数组,执行MyClass b[2]时建立了两个对象b[0],b[1],还建立了对象a,共建立三个对象,三次调用构造函数.

只有a和b[2]调用了构造函数,而*p[2]还没有实例化,所以调用了3次

b[2]是一个数组,里面有两个MyClass对象,而每个对象都会调用一次构造函数。

如果p[0] = new MyClass[2];p[1]=new MyClass[2];
那么上面各调用两次构造函数。

b[2]是个数组,有2个MyClass对象

b[2],这个数组长度是2,构造函数要初始化两次,建立了两个对象,*p[2]是指针,没有实例化,不占内存,不调用构造函数。