筆記 類的組合,是如何析構的,及領悟

2021-08-10 21:06:22 字數 577 閱讀 8765

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...