国产探花免费观看_亚洲丰满少妇自慰呻吟_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專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 健康| 兴安盟| 内乡县| 三都| 隆安县| 渭南市| 道孚县| 石渠县| 班玛县| 锦州市| 承德市| 阜宁县| 盱眙县| 东乡族自治县| 平安县| 诸暨市| 太白县| 阿鲁科尔沁旗| 达尔| 凤城市| 二连浩特市| 武清区| 夏津县| 安福县| 海安县| 禄劝| 大厂| 建水县| 郯城县| 友谊县| 马公市| 休宁县| 甘洛县| 太和县| 老河口市| 寿阳县| 泰和县| 池州市| 青铜峡市| 海城市| 台东县|