1、先基类、后对象、再子类 多继承,初始化顺序跟基类的声明顺序有关,从左到右。 对象 ,与声明类的顺序有关,从上到下。
2、若基类的构造器是默认构造器,就可以不显示的调用,如果没有的话,必须显示调用 此规则同样适用于类中的对象。 3、派生类的析构顺序,与构造顺序相反。 先子类、后对象、再基类。正好符合压栈与出栈的顺序。 并且,不需要显示的调用析构器,因为析构器默认无参且不能重载,以下为演示代码:
代码语言:javascript复制#include
using namespace std;
class X
{
public:
X(){cout << “X(){}” << endl;}
X(){cout << “X(){}” << endl;}
};
class Base
{
public:
Base(){cout << “Base(){}” << endl;};
Base(){cout << “Base(){}” << endl;};
};
class Derive : public Base
{
public:
Derive(){cout << “Derive(){}” << endl;};
Derive(){cout << “Derive(){}” << endl;};
private:
X x;
};
int main(int argc, char* argv[])
{
Derive d;
return 0;
}
代码运行后的效果如下: