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

admin2021-06-10  23

问题 有如下类定义:
    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、MyClass 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/iyfp777K
0

最新回复(0)