2020-12-22

88 阅读1分钟

在这里插入图片描述构造函数的调用顺序问题:

  1. 多个基类派生而来时,构造函数顺序按照派生类声明时的顺序。class A:public B,public C, public D ;A:A():B(),D(),C(){//函数体},则按照B,C,D,A的构造顺序,而不是A的构造函数的初始化列表的顺序(即A,B,D,C)
  2. 最先调用虚基类的构造函数,即先调用含有virtual的构造函数
  3. 当多个虚基类时,同理按照声明顺序而不是参数列表顺序。
  4. 若有对象成员,再调用其对应的构造函数
  5. 最后调用该类本身(A)的构造函数
  6. 析构函数的顺序与构造函数刚好相反,呈现出沿此分界线对称的状态。