有如下类定义: class MyClass{ int k; public: MyClass(int n):k(n){} }; 则下列数组定义中,错误的是( )。

admin2021-05-06  33

问题 有如下类定义:
class MyClass{
int k;
public:
MyClass(int n):k(n){}
};
则下列数组定义中,错误的是(    )。

选项 A、MyClass m4[4]={MyClass(1),MyClass(2),MyClass(3),MyClass(4)};
B、MyClass m4[]={MyClass(1),MyClass(2),MyClass(3)};
C、MyClass m4[4]={1,2,3};
D、MyCtass m4[]={1,2,3};

答案C

解析 选项A、B都使用Myclass类的构造函数,完成数组元素的初始化,数组定义正确;选项D中,隐式使用Myclass类的构造函数(接收一个int型的参数),将整数1、2、3转换为Myclass类的对象,数组定义正确;选项C中,数组前3个元素同选项D,可以完成初始化,但是第4个数组元素,需要调用Myclass类的默认构造函数,由于MyClass类已经提供了一个构造函数(非默认构造函数),所以编译器不会自动生成默认构造函数,也就无法构造第4个元素,选项C错误。故本题答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/uXfp777K
0

最新回复(0)