一 点睛
1 构造函数调用顺序规则如下:
1.1 基类构造函数
1.2 成员对象构造函数
1.3 派生类构造函数
析构函数的调用顺序与构造函数调用顺序正好相反。
析构函数在下面3种情况下被调用
-
对象生命周期结束被销毁时
-
delete指向对象的指针时,或delete指向对象的基类类型指针,并且其基类析构函数是虚函数时
-
对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用
二 实战
1 代码
#include<iostream>
using namespace std;
class CBase{
public:
CBase (){ std::cout<<"CBase::CBase()"<<std::endl; }
~ CBase (){ std::cout<<"CBase::~CBase()"<<std::endl; }
};
class CBase1:public CBase {
public:
CBase1 (){ std::cout<<"CBase::Base1()"<<std::endl; }
~ CBase1 (){ std::cout<<"CBase::~Base1()"<<std::endl; }
};
class CDerive{
public:
CDerive (){ std::cout<<"CDerive::CDerive()"<<std::endl; }
~ CDerive (){ std