构造顺序
继承下,构造顺序前后顺序为:基类 , 内嵌子对象(成员类),派生类
其中,内嵌子对象,按照声明顺序,基类按照继承的先后顺序
析构顺序
与构造顺序相反
code
父类 子类
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
cout<<"Base"<<endl;
}
~Base()
{
cout<<"~Base"<<endl;
}
};
class Drive : public Base
{
public:
Drive()
{
cout<<"Drive"<<endl;
}
~Drive()
{
cout<<"~Drive"<<endl;
}
};
int main()
{
Drive d;
return 0;
}
运行结果:
Base
Drive
~Drive
~Base
父类 子类 派生类
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
cout<<"Base"<<endl;
}
~Base()
{
cout<<"~Base"<<endl;
}
};
class Base1
{
public:
Base1()
{
cout<<"Base1"<<endl;
}
~Base1()
{
cout<<"~Base1"<<endl;
}
};
class Drive : public Base
{
public:
Drive()
{
cout<<"Drive"<<endl;
}
~Drive()
{
cout<<"~Drive"<<endl;
}
private:
Base1 b1;
};
int main()
{
Drive d;
return 0;
}
运行结果:
Base
Base1
Drive
~Drive
~Base1
~Base
多继承
#include <iostream>
using namespace std;
class Base1
{
public:
Base1()
{
cout<<"Base1"<<endl;
}
~Base1()
{
cout<<"~Base1"<<endl;
}
};
class Base2
{
public:
Base2()
{
cout<<"Base2"<<endl;
}
~Base2()
{
cout<<"~Base2"<<endl;
}
};
class MBase1
{
public:
MBase1()
{
cout<<"MBase1"<<endl;
}
~MBase1()
{
cout<<"~MBase1"<<endl;
}
};
class MBase2
{
public:
MBase2()
{
cout<<"MBase2"<<endl;
}
~MBase2()
{
cout<<"~MBase2"<<endl;
}
};
class Drive : public MBase1, public MBase2
{
public:
Drive()
{
cout<<"Drive"<<endl;
}
~Drive()
{
cout<<"~Drive"<<endl;
}
private:
Base1 b1;
Base2 b2;
};
int main()
{
Drive d;
return 0;
}
运行结果:
MBase1
MBase2
Base1
Base2
Drive
~Drive
~Base2
~Base1
~MBase2
~MBase1