派生类构造函数调用顺序:
1.基类的构造函数.
2.子对象类的构造函数.
3.派生类构造函数.
当对象被删除时,派生类的析构函数被执行,由于析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也会被调用。先执行派生类的析构函数,再执行子对象类的析构函数,再执行基类的构造函数。
#include
using namespace std;
class A
{
public:
A()
{
cout<<"Construct A"<<endl;
}
~A()
{
cout<<"Destruct A"<<endl;
}
};
class B
{
public:
B()
{
cout<<"Construct B"<<endl;
}
~B()
{
cout<<"Destruct B"<<endl;
}
};
class CBase
{
public:
CBase(void)
{
cout<<"Construct Base"<<endl;
}
~CBase(void)
{
cout<<"Destruct Base"<<endl;
}
A a;
B b;
};
class CBaseEx :public CBase
{
public:
A a;
B b;
CBaseEx()
{
cout<<"Construct BaseEx"<<endl;
}
~CBaseEx()
{
cout<<"Destruct BaseEx"<<endl;
}
};
int main(int argc,char*argv[])
{
CBaseEx cb1;
return 0;
}
1.基类的构造函数.
2.子对象类的构造函数.
3.派生类构造函数.
当对象被删除时,派生类的析构函数被执行,由于析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也会被调用。先执行派生类的析构函数,再执行子对象类的析构函数,再执行基类的构造函数。
#include
using namespace std;
class A
{
public:
};
class B
{
public:
};
class CBase
{
public:
};
class CBaseEx :public CBase
{
public:
};
int main(int argc,char*argv[])
{
}