程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 從匯編看c++的默認析構函數的使用詳解

從匯編看c++的默認析構函數的使用詳解

編輯:C語言基礎知識

c++中,如果沒有為一個類提供析構函數,那麼編譯器會為這個類提供默認的析構的函數。由於析構函數的功能和構造函數相反,因此和默認的構造函數類似,編譯器也會提供無用的默認的析構函數,和非無用的析構函數。兩者的分析情況一樣(對於默認的構造函數分析,請參看《從匯編看c++中默認構造函數的使用分析》)。並且編譯器會提供非無用的默認析構函數情形和默認構造函數類似:

1 類含有虛成員函數(類繼承自虛基類或者繼承的基類含有虛成員函數,也屬於這種情況)

2 類繼承自一個基類,基類含有自定義析構函數(如果基類沒有自定義析構函數,但是編譯器會為它提供一個非無用的默認析構函數,也屬於這種情況。這就是說,只要基類含有一個析構函數,不管這個析構函數是自定義的,還是編譯器提供的非無用的默認析構函數,都行)

3 類包含一個成員對象,該成員對象自定義析構函數(如果成員對象沒有自定義析構函數,但是編譯器會為它提供一個非無用的默認析構函數,也屬於這種情況。這就是說,只要成員變量含有一個析構函數,不管這個析構函數是自定義的,還是編譯器提供的非無用的默認析構函數,都行).

並且,對於編譯器提供的默認析構函數,不管是無用的,還是非無用的,它們都不會自動清除對象裡面所包含的資源。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved