私はC++に少し新しく、今までObj-CとJavaでプログラミングを行っていました。C++:メモリ管理について
言って、私はクラスを持っている:
class Person {
private:
Wife *current_wife;
//.....
};
は、だから私は、妻のインスタンス変数を変更するためにsetterメソッドを実装する必要がOBV。このよう
:shalllowコピーだろう
Person::SetCurrentWife (Wife *new_wife) {
current_wife = new_wife;
}
。
だから、どこかでメインループか何かから私が呼ん:
Person *some_person = new Person();
...
Wife *wife = new Wife();
some_person->SetCurrentWife(wife);
だから私は混乱している:ここでメモリリークがあるでしょうか?ここで、またはPersonのデストラクタで妻オブジェクトを削除すべきですか? Obj-Cでは、私は現在の妻を解放し、上記のオブジェクトにretainメッセージを送信しますが、C++でセッターメソッドを実行する正しい方法は何ですか?
C++を初めて使ったので、このアドバイスに注意してください: 'new'、' delete'、またはポインタを使用しないでください。例外として、スマートポインタのコンストラクタの中で 'new'を使うかもしれませんが、あなたが実際にダイナミックストレージを必要とすると判断した後でなければなりません。 –
Kerrekは[良い入門C++の本](http://stackoverflow.com/q/388242/46642)をお勧めしませんでした:) –
OOでは、あなたはセッターが必要ではありません、オブジェクトに何かをさせる関数が必要です(離婚、再婚)。セッターは便利かもしれない、彼らはobvではない。 – stefaanv