本文主要是介绍子类构造和析构被执行时是否调用父类以及调用顺序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
子类构造和析构被执行时是否调用父类以及调用顺序
1)子类被构造的时候会先调用父类的构造函数
2)子类析构的时候先调用子类的析构函数后调用父类的析构函数
如果直接用子类构造一个父类的对象,删除这个父类的对象不会调用子类的析构函数(父类的析构函数为虚函数除外)
示例代码:
//A是一个父类 , 析构函数不是虚函数
class A
{
public:A(){cout << " A constructor" << endl;}~A(){cout << " A destructor" << endl;}
};//B是A的子类
class B : public A
{
public:B(){cout << " B constructor" << endl;}~B(){cout << " B destructor" << endl;}
};//C是一个父类 , 析构函数是虚函数
class C
{
public:C(){cout << " C constructor" << endl;}virtual ~C(){cout << " C destructor&
这篇关于子类构造和析构被执行时是否调用父类以及调用顺序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!