結論:只有當類的某個例項化物件的建構函式執行完畢,而且當該物件退出作用域時,才會執行析構函式。
如果在執行建構函式的過程中丟擲了異常,就不會呼叫析構函式
上測試**:
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...