答案为什么选c,其他的为什么不对呢?

已知类MyClass声明如下:classMyClass{intn;public;MyClass(intk):n(k){}intgetValue()const{return... 已知类MyClass声明如下:
class MyClass{
int n;
public;
MyClass(int k):n(k){}
int getValue()const {return n;}
};
在下列数组定义中正确的是
A)MyClass x1[2]; B)MyClass x2[2]={new MyClass(1), new MyClass(2)};
C)MyClass *x3[2]; D)MyClass *x4[2]={MyClass(1), MyClass(2)};
展开
 我来答
风若远去何人留
2016-12-27 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450110
专业C/C++软件开发

向TA提问 私信TA
展开全部
A 没有无参构造 无法创建对象。
B new MyClass(1)的类型是MyClass * 和数组类型不匹配。
C 定义指针, 并没有创建对象,不会调用构造。 这里也没初始化
所以这个是对的
D 数组类型是指针,MyClass(1)是创建对象,这个和B类似 不过是反过来的。也是类型不匹配。
追问
MyClass x1[2]会调用构造函数?
追答
会的
这个是创建了两个对象x1[0]和x1[1], 构造函数会调用两次的。
当没有初始化列表的时候 就会调用无参构造了。
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式