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

admin2020-07-23  24

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

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

答案D

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

最新回复(0)