這篇文章主要介紹了C++編程中派生類的析構函數,析構函數平時一般使用較少,需要的朋友可以參考下
和構造函數類似,析構函數也是不能被繼承的。
創建派生類對象時,構造函數的調用順序和繼承順序相同,先執行基類構造函數,然后再執行派生類的構造函數。但是對于析構函數,調用順序恰好相反,即先執行派生類的析構函數,然后再執行基類的析構函數。
請看下面的例子:
- #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;
- }
運行結果:
- A constructor
- B constructor
- C constructor
- C destructor
- B destructor
- A destructor
從運行結果可以很明顯地看出來,構造函數和析構函數的執行順序是相反的。
需要注意的是,一個類只能有一個析構函數,調用時不會出現二義性,所以析構函數不需要顯式地調用。
新聞熱點
疑難解答