构造派生类对象的时候,如果在派生类构造函数的初始化列表中没有指定基类的构造函数,则默认调用基类的默认构造函数(当然,前提是基类提供了默认构造函数或者没有定义任何其他的构造函数),再调用自己的构造函数。属于基类的数据成员,其初始化由基类构造函数完成,而在派生类的构造函数中不能对该成员进行初始化,否则编译器将报错!看下面的代码:
显示结果如下:
A() called
B(int) called
1
如果将以上代码进行修改,如下:
显示结果如下:
A() called
B(int) called
2
再对代码进行修改,如下:
结果编译器报错。
由此可见,基类成员不能在派生类构造函数中进行初始化,但可以进行赋值,两者是有区别的。