C++ 基类和派生类的析构函数
生活随笔
收集整理的這篇文章主要介紹了
C++ 基类和派生类的析构函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
和構(gòu)造函數(shù)類似,析構(gòu)函數(shù)也不能被繼承。與構(gòu)造函數(shù)不同的是,在派生類的析構(gòu)函數(shù)中不用顯式地調(diào)用基類的析構(gòu)函數(shù),因為每個類只有一個析構(gòu)函數(shù),編譯器知道如何選擇,無需程序員干涉。
另外析構(gòu)函數(shù)的執(zhí)行順序和構(gòu)造函數(shù)的執(zhí)行順序也剛好相反:
創(chuàng)建派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序和繼承順序相同,即先執(zhí)行基類構(gòu)造函數(shù),再執(zhí)行派生類構(gòu)造函數(shù)。
而銷毀派生類對象時,析構(gòu)函數(shù)的執(zhí)行順序和繼承順序相反,即先執(zhí)行派生類析構(gòu)函數(shù),再執(zhí)行基類析構(gòu)函數(shù)。
請看下面的例子:
#include <iostream> using namespace std;class A{ public:A(){cout<<"A constructor"<<endl;}~A(){cout<<"A destructor"<<endl;} };class B: public A{ public:B(){cout<<"B constructor"<<endl;}~B(){cout<<"B destructor"<<endl;} };class C: public B{ public:C(){cout<<"C constructor"<<endl;}~C(){cout<<"C destructor"<<endl;} };int main(){C test;return 0; }運行結(jié)果:
A constructor B constructor C constructor C destructor B destructor A destructor總結(jié)
以上是生活随笔為你收集整理的C++ 基类和派生类的析构函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ throw
- 下一篇: C++ 深拷贝和浅拷贝