国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++的虛析構詳解及實例代碼

2020-01-26 14:08:46
字體:
來源:轉載
供稿:網友

C++的虛析構

  最近準備復習一遍所有的知識點,先從基礎開始做起,用幾分鐘寫個繼承和析構吧。

  父類為A,子類為B,代碼如下:

class A{ public: A() {   cout << "構造A"<< endl;  } ~A() {  cout << "析構A" << endl;  }}class B:public A{ public: B() { cout << "構造B"<< endl;  } ~B() { cout << "析構B"<< endl; }}

這個時候在main函數里,

定義一個A的對象,A a;運行輸出結果為:構造A 析構A。

定義一個B的對象, B b;運行的輸出結果為:構造B 析構B。

定義一個A的指針,指向B。A *P = new b; 運行輸出結果為:構造A 構造B.這個時候很多人就容易出問題了,為啥沒調用析構呢,這個也是經常遇到的問題,最簡單也是最容易遺忘的。new出來的對象沒有刪,還有寫一行代碼 delete p;這個時候的運行輸出結果為:構造A 構造B 析構A。又出現問題了,B的析構怎么沒走,這個時候需要一用虛析構這個概念,虛析構的功能:父類的析構寫成虛析構,在刪除父類的指針的時候,可以刪除子類的對象,避免內存泄漏。

具體操作就是把上面代碼的第八行,前面加一個virtual。這個時候再運行輸出結果為:構造A 構造B 析構B 析構A。注意這里也可以看出調用順序,先走父類的構造,然后子類的構造。先走子類的析構,最后走父類的析構。 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭觉县| 隆林| 湛江市| 巢湖市| 肥乡县| 惠州市| 中方县| 固始县| 泸溪县| 寻乌县| 黄山市| 井陉县| 岫岩| 江永县| 武义县| 镇巴县| 潍坊市| 子洲县| 咸丰县| 耿马| 平乡县| 武安市| 军事| 五河县| 博罗县| 阿坝县| 北碚区| 永寿县| 视频| 洛川县| 清新县| 雷山县| 镇原县| 竹北市| 阿图什市| 简阳市| 南康市| 平凉市| 新巴尔虎右旗| 额尔古纳市| 菏泽市|