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