class a
~a()
};class b
~b()
int _tmain(int argc, _tchar* argv)
{auto p = new b();
delete p;
過程:先建立 a
再建立 b
delete p;
過程分解:
1.先呼叫 b 的 析構函式
然後再呼叫 a 的析構函式
2.然後才會將記憶體中資料釋放掉
領悟:boost::shared_ptr<> 中將px所指向的記憶體釋放工作交給 shared_count pn去處理。而boost::shared_ptr採用的是預設的析構函式。
分析:shared_ptr 物件釋放,必定會呼叫 shared_ptr 的析構函式 和 shared_count的析構函式,將 px指向的記憶體釋放工作交由 shared_count來處理(通過處於這個過程中)
std::shared_ptr 的實現略有不同
boost::shared_ptr<> 採用的是 類的組合
std::shared_ptr<> 採用的是類的繼承
c 組合類的構造,複製構造,析構順序
先貼 include using namespace std class cat public cat int intialage catage intialage cout 餘童蘭上課習題,被點名回答,沒答案上來 有兩個類 cat和 dog zoo乙個組合類,包含cat和dog 各有 構造,複製構...
C 學習筆記 類的析構函式
析構函式 destructor 也是乙個特殊的成員函式,它的作用與建構函式相反,它的名字是類名的前面加乙個 符號。在c 中 是位取反運算子,從這點也可以想到,析構函式是與建構函式作用相反的函式。當物件的生命期結束時,會自動執行析構函式。程式就會執行析構函式的幾種情況 如果在乙個函式中定義了乙個物件 ...
為什麼基類的析構函式是虛函式
1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxd...