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

admin2015-07-22  14

问题 有如下程序:
     #include
     using namespace 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)};
          return 0;
     }
此程序编译时未能通过,原因是

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

答案D

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

最新回复(0)