问题 单项选择题

有如下类定义: class Test {int x_,y_;public: Test ():a_(0) ,b_(0) {} Test(int a,int b=0) :a_(a),b_(b){}}; 若执行语句 Test x(2) ,y[3],*z[4]; 则Test类的构造函数被调用的次数是( )。

A.2次

B.3次

C.4次

D.5次

答案

参考答案:C

解析: 定义对象x时执行一次构造函数(调用Test(int a,int b=0) ),定义对象数组y时,构造函数(注意,该构造函数必须是没有任何参数的)的执行次数与数组中对象的个数相等,即需要执行3次,最后定义一个指向Test对象的指针数组,它并不会创建对象,从而也就不会去执行构造函数,故构造函数一共执行了4次。

单项选择题
填空题