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

首頁 > 學院 > 開發設計 > 正文

Bjarne:為何析構函數默認不是virtual

2019-11-17 05:10:44
字體:
來源:轉載
供稿:網友

  因為很多類并不是被設計作為基類的。只有類在行為上是它的派生類的接口時(這些派生類往往在堆中分配,通過指針或引用來訪問),虛擬函數才有意義。

  那么什么時候才應該將析構函數定義為虛擬呢?當類至少擁有一個虛擬函數時。擁有虛擬函數意味著一個類是派生類的接口,在這種情況下,一個派生類的對象可能通過一個基類指針來銷毀。例如:

class Base {
 // ...
 virtual ~Base();
};

class Derived : public Base {
 // ...
 ~Derived();
};

void f()
{
 Base* p = new Derived;
 delete p; // 虛擬析構函數保證~Derived函數被調用
}


  假如基類的析構函數不是虛擬的,那么派生類的析構函數將不會被調用——這可能產生糟糕的結果,例如派生類的資源不會被釋放。 更多文章 更多內容請看Virtual專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江阴市| 南召县| 安图县| 江川县| 五台县| 雷山县| 个旧市| 宁武县| 繁峙县| 怀宁县| 襄城县| 旺苍县| 盐亭县| 宝鸡市| 理塘县| 湘乡市| 兴国县| 博爱县| 睢宁县| 岗巴县| 柘城县| 乐业县| 古交市| 嘉定区| 海城市| 昌宁县| 疏附县| 兴和县| 德安县| 无锡市| 沧州市| 海安县| 岢岚县| 苗栗县| 吴江市| 平乐县| 丁青县| 克拉玛依市| 丰宁| 祁阳县| 温泉县|