在C++中,誰負責刪除類的成員:類,或者說類的一個實例的創造者?
例如,下面的代碼:誰負責刪除
class B {
public:
B(int x) { num = x; }
int num;
};
class A {
public:
A(B* o) { obj = o; }
B* obj;
};
int main(void) {
A myA(new B(3));
return 0;
}
應該main
刪除B
的情況下,還是應該A
的析構函數刪除其本地變量obj
?這在大多數情況下都是如此,在哪些情況下,這種情況不是嗎?
這是一個析構函數。所以,在調用析構函數時回答這個問題,即類。如果您使用智能指針,則不必擔心。 – chris 2012-03-31 03:17:58
這將是您的設計選擇。唯一強制執行的規則是:你的程序必須爲每個'new'調用'delete'。 – 2012-03-31 03:19:00