二级C++题:求下列对Myclass类对象数组的定义和初始化语句中正确的是?

如题所述

题目有问题:(代码编译
不过,是错误的)
1
MyClass
()
(int
d)
{data=d;}
这行如果改为:
MyClass
(int
d)
{data=d;}
那么正确的答案是D;(其中,X[1]是NULL。实质是指针初始化)
2
如果改为:
MyClass
operator()(int
d)
{
data
=d;
return
*this;
},正确答案是A;
如果不改,全错。
两个要点:
1
类对象数组的初始化(不是指针初始化)。
初始化就是用{},假如不写,就用缺省构造函数(无参数构造函数)。
大括号中间写构造函数形式即可:如{MyClass(2),MyClass(3)}
2
MyClass
()
(int
d)
{data=d;}不是构造函数,这个写法其实有问题,既有点象构造函数(多了个括号)
MyClass
(int
d)
{
data
=d;}
有有点象仿函数(但是差的不是一点半点):
MyClass
operator()(int
d)
{
data
=d;
return
*this;
}
总结:
题目有点问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-08
1.首先数组元素是MyClass对象,当执行MyClass
arrays(5)的时候会调用构造函数,也就是MyClass(int
d){data
=
d;}分配内存空间(在栈中分配,用new的时候是在堆分配,关于堆栈可以网上查一下),此时,就构造完了一个对象。
第2个回答  2019-07-07
C.
MyClass
arrays[2]
=
{
MyClass
arrays(5)
,
MyClass
arrays(6)
}
如果定义单个对象
MyClass
a(5);
MyClass
b(6);
数组当然是初始化两个
相似回答