如果我不使用new
來分配類的數據成員,是否還有任何清理需要在析構函數中完成?例如,在以下情況下,我需要delete
這個向量嗎?還是取決於MyType
?我是否需要清理非指針數據成員?
class A {
A();
~A();
MyType x;
std::vector<MyType> v;
};
A::A() {
x = MyType(42);
v = std::vector<MyType>(5);
}
A::~A() {
// what goes here?
}
在這種特殊情況下,不需要dtor。請記住,「RAII」中的「R」代表*資源*,而不是*記憶*。有時你需要在dtor中釋放內存以外的東西。 –
@JohnDibling但是這個(至少是第二部分)是基於這樣的假設,即資源在其特定所有者被銷燬時被釋放。因此,如果'MyType'獲取資源並在其析構函數中釋放它,那就沒問題。 –
是的,我更多的爲未來的讀者發表評論。 :) –