问题
单项选择题
已知类MyClass声明如下: class MyClass{ int U; public: MyClass(int k):n(k){ } int getValue( )const{return n;} }; 在下列数组定义中正确的是
A.MyClass xl[2];
B.MyClass x2[2]={new MyClass(1),new MyClass(2)};
C.MyClass*x3[2];
D.MyClass*x4[2]={MyClass(1),MyClass(2)};
答案
参考答案:C
解析: 对象作为数组元素,对数组初始化赋值时,调用无参构造函数时,数组定义格式为: 类名 数组名[下标表达式]=new类名( )调用带有一个参数的构造函数时,数组定义格式为: 类名 数组名[下标表达式]=new{类名(参数),类名(参数)……}, 或者 类名 数组名[下标表达式]={参数1,参数2,……}。 当定义指针时,指针数组的每个元素都应该新建一个对象,一般格式为: 类名*指针名={new 类名(参数),new类名(参数),……}。