有如下类定义: class Pa{ int k; public: Pa():k(0){ //① Pa(int n):k(11){} //② Pa(Pa&p):k(p.k){} //③

admin2015-07-24  17

问题 有如下类定义:
    class Pa{
    int k;
    public:
    Pa():k(0){    //①
    Pa(int n):k(11){}    //②
    Pa(Pa&p):k(p.k){}    //③
    };
    若执行语句
    Pa a[]={Pa(1),Pa(2)};
    则在标有号码的构造函数中,被调用的包括(    )。

选项 A、①
B、①和②
C、②
D、②和③

答案C

解析 对象数组,就是数组元素是类对象,不管对象数组在哪里定义,如果没有显式的调用构造函数初始化,编译器将使用类的默认构造函数初始化对象元素,这里程序中显式的使用构造函数Pa(intn)初始化各个元素,所以被调用的构造函数只有Pa(int n),没有调用默认构造函数和复制构造函数,答案为C。
转载请注明原文地址:https://kaotiyun.com/show/0cNp777K
0

最新回复(0)