[c/c++]析構函數virtual相關

 基類的構造函數、析構函數、賦值函數都不能被派生類繼承。

#include <iostream>
using namespace std;

class A
{
public:
    A()
{cout<<"A constructor"<<endl;}
    
~A(){cout<<"A desstructor"<<endl;}
}
;

class B : public A
{
public:
    B()
{cout<<"B constructor"<<endl;}
    
~B(){cout<<"B desstructor"<<endl;}
}
;

int main(){
    A 
*pa = new B;
    delete pa;
    
return 0;
}

//輸出
//A constructor
//B constructor
//A desstructor

父類的析構函數沒有聲明爲virtual,故子類的析構函數不會被調用到
若~A爲virtual的,則~B自動爲virtual
發佈了64 篇原創文章 · 獲贊 17 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章