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