我对C++有点新,并且一直在使用Obj-C和Java进行编程。C++:关于内存管理
说,我有一个类:
class Person {
private:
Wife *current_wife;
//.....
};
所以OBV我需要实现一个setter方法来改变妻子的实例变量。
像这样:
Person::SetCurrentWife (Wife *new_wife) {
current_wife = new_wife;
}
这将是一个shalllow副本。
因此,从主回路或我称之为地方:
Person *some_person = new Person();
...
Wife *wife = new Wife();
some_person->SetCurrentWife(wife);
所以我很困惑:会不会有内存泄漏吗?我应该在这里还是在Person的析构函数中删除妻子对象?在Obj-C中,我会释放当前的妻子,然后向上面的妻子对象发送保留消息,但在C++中执行setter方法的正确方法是什么?
因为你是新的C++,听从这个建议:不要使用'new','delete',或指针。作为一个例外,你可能会在智能指针的构造函数中使用'new',但是只有在确定你确实需要动态存储之后才能使用'new'。 – 2011-12-20 13:29:11
Kerrek忘了推荐[一个很好的入门C++的书(http://stackoverflow.com/q/388242/46642):) – 2011-12-20 13:31:48
在OO你不OBV需要一个二传手,你需要的功能,让对象做些什么(离婚,再婚)。安装者可能很方便,但他们不是。 – stefaanv 2011-12-20 13:34:08