哪几种情况必须用到初始化成员列表
c++
(1)类的成员是常量成员初始化;
(2)类的成员是对象成员初始化,而该对象没有无参构造函数。
当调用一个基类的构造函数,而构造函数拥有一组参数时
当调用一个成员类的构造函数,而他拥有一组参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class B { protected: int i; int j; public: B(int x,int y) { i=x; j=y; } };
class A { private: int a; B b; public: A(B b1,int a1) { b=b1; a=a1; } }; int main() { return 0; }
|
通俗的就是,如果基类没有构造函数,派生类的初始化列表必须初始化基类,必须用基类的构造函数构造一个。
因为派生类继承基类时,会先构造基类,然后在构造派生类,如果基类不是默认的构造函数,那么就不知道基类到底咋构造,因此……
(3)类的成员常变量时。
(4)类的成员是引用时。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class B { protected: const int i; int &j; public: B(int x,int &y):i(x),j(y) { } };
|
原文地址:https://www.cnblogs.com/bigbigtree/p/3540984.html