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

admin2020-07-23  30

问题 有如下类定义:
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

解析 MyClass提供一个参数为整型变量的构造函数,构造对象时,使用参数初始化成员k的值;选项A定义一个包含4个元素的数组,数组元素的类型是MyClass类型,并且对该数组的4个元素分别显示调用构造函数完成初始化,选项A正确;同理,选项B定义数组m4,由于初始化值个数为3个,所以系统默认该数组长度为3,选项B正确;选项D定义数组m4,使用3个整数初始化数组元素,此时系统调用构造函数将整数隐式转换成MyClass类型,并默认数组长度为3,选项D正确;选项C同样定义数组m4,它包含4个元素,初始化时,同样使用3个整数1,2,3初始化前3个元素,系统调用构造函数将整数隐式转换成MyClass类型,来完成前3个元素的初始化,但是由于MyClass没有默认构造函数,所以第4个元素不能完成构造,选项C错误,本题答案为C。
转载请注明原文地址:https://jikaoti.com/ti/P8l0FFFM
0

最新回复(0)