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
これはあなたの設計上の選択です。強制的な唯一の規則はこれです:あなたのプログラムは、 'new'ごとに' delete'を呼び出さなければなりません。 –