C 析構函式的呼叫時機

2022-03-11 03:17:14 字數 721 閱讀 4673

結論:只有當類的某個例項化物件的建構函式執行完畢,而且當該物件退出作用域時,才會執行析構函式。

如果在執行建構函式的過程中丟擲了異常,就不會呼叫析構函式

上測試**:

1

class

test

210 ~test()

1114

};15

16int

main()

1722

catch

(...)

2326

return0;

27 }

執行結果:

推出這麼一種不安全的情況

1

class

example

213 ~example()

1418

private:19

int*m_p1;

20int*m_p2;

21 };

進一步推出結論:在乙個類中不要管理多個資源,如果必須要管理多個資源,則建立多個資源管理類,將這些資源一對一滴分配給資源管理類來進行管理,再將資源管理類作為成員放在目標類中。

c 中析構函式呼叫時機的研究

眾所周知,c 中的每個類都會有乙個析構函式,當這個類的物件被銷毀的時候,物件會自動呼叫析構函式。那麼什麼情況下物件的析構函式會被自動呼叫呢?其實這個問題也可以換種方式問,什麼情況下物件會被自動銷毀。我們跟據物件的宣告方式分兩種情況來講 1 動態宣告的物件 這種宣告方式下系統會自動銷毀不再使用的物件,...

C 拷貝函式呼叫時機

c 中的拷貝構造函式呼叫時機通常有三種情況 示例 include using namespace std class person person int age person const person p 析構函式在釋放記憶體之前呼叫 person public int mage 1.使用乙個已經建...

類虛析構函式 使用原因,使用時機

我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase virtual clxbase 的輸出結果是 do something in class clxderived output from th...