比方說,我有一個A級:刪除在運營商不使用的對象=重載
class A
{
private:
int value;
public:
A(int value)
{
this->value=value;
}
A& operator= (A& obj)
{
value=obj.value;
}
};
有一個問題,如果我使用上下文實例:
A obj;
obj=*new A(5);
這種情況下,新對象創建不會被刪除,我會失去它的參考。 所以我可以把在運營商=重載函數中的指令來刪除它是分配的權值的對象,但如果我這樣做:
A obj1,obj2;
obj1=obj2;
那麼如何避免浪費內存?有辦法嗎?
@Oli Charlesworth: 但是那麼迭代器是如何實現的呢?例如,在標準::名單,如果我說:
list<string> l;
// initialize the list elements
list<string>::iterator i=l.begin();
這是一個任務,就是那種名單的另一個目的是:迭代產生的?
是的,你正在製作一個'list :: iterator'的副本。迭代器被設計爲可複製的。如果你想了解更多關於對象是如何被創建和銷燬的,你可以選擇[一本好的C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list )。 –
2012-02-12 13:27:18
那麼由l.begin()創建的對象會丟失? – 2012-02-12 13:34:28