有如下程序: #include using namespaee std; class CC{ int k; public: CC(int n):k(n){} int get()const

admin2021-05-06  18

问题 有如下程序:
    #include   
    using namespaee std;
    class CC{
    int k;
    public:
    CC(int n):k(n){}   
    int get()const{return k;}
    };
    int main(){
    CC c[3]={CC(1),cc(2)};
    retum 0;
    }
    此程序编译时未能通过,原因是(    )。

选项 A、数组只能定义为基本数据类型
B、类CC缺少复制构造函数
C、对象数组只能作为类的数据成员
D、类CC缺少默认的构造函数

答案D

解析 对象数组无论在哪里定义,都需要自动调用该对象元素的类的默认构造函数进行初始化,如果该类没有默认构造函数,必须为数组的元素提供显式初始化;程序中定义了对象数组c,它包含了三个元素,前两个元素使用构造函数cc(int n)显式初始化,最后一个元素需要使用默认构造函数初始化,由于类CC中已经定义了构造函数,所以编译器不会自动生成默认的构造函数,缺少默认构造函数导致对象数组c的第三个元素无法完成初始化,编译错误;答案为D。
转载请注明原文地址:https://jikaoti.com/ti/Zfh0FFFM
0

最新回复(0)