一道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],为什么会调用两次
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]是指针,没有实例化,不占内存,不调用构造函数。