使用赋值运算符重载时,无法在 operator=() 之外访问新对象
When using assignment operator overloading, the new object isn't accessible outside of operator=()
我有一个 Queue 的实现,它需要编写赋值运算符重载。
Queue& Queue::operator= (const Queue& rhs){
if(this->head == rhs.head) return *this;
Queue * newlist;
if(rhs.head == NULL){
// copying over an empty list will clear it.
this->clear();
return * newlist;
}
newlist = new Queue(rhs);
cout << "made new queue" << endl;
cout << "new list : " << * newlist << endl;
return * newlist;
}
我 运行 遇到的问题是,当我离开这个函数时, newlist
的内容将无法再访问。 operator=() 函数应该是什么样子?
编辑:
queue.h:
class Queue : public LinkedList {
protected:
unsigned maxSize;
public:
Queue(unsigned N = -1);
Queue(const Collection& collection, unsigned N = -1);
~Queue();
Queue(const Queue& obj);
Queue& operator= (const Queue& rhs);
friend std::ostream& operator<<(std::ostream& ostream, const Queue &rhs);
bool add(myType element);
myType element();
bool offer(myType element);
myType peek();
myType poll();
myType remove();
};
How is an operator=()
function supposed to look?
operator=
应该用 rhs
的值修改内部对象 (*this)
,然后按字面意思 return (*this)
.
我有一个 Queue 的实现,它需要编写赋值运算符重载。
Queue& Queue::operator= (const Queue& rhs){
if(this->head == rhs.head) return *this;
Queue * newlist;
if(rhs.head == NULL){
// copying over an empty list will clear it.
this->clear();
return * newlist;
}
newlist = new Queue(rhs);
cout << "made new queue" << endl;
cout << "new list : " << * newlist << endl;
return * newlist;
}
我 运行 遇到的问题是,当我离开这个函数时, newlist
的内容将无法再访问。 operator=() 函数应该是什么样子?
编辑: queue.h:
class Queue : public LinkedList {
protected:
unsigned maxSize;
public:
Queue(unsigned N = -1);
Queue(const Collection& collection, unsigned N = -1);
~Queue();
Queue(const Queue& obj);
Queue& operator= (const Queue& rhs);
friend std::ostream& operator<<(std::ostream& ostream, const Queue &rhs);
bool add(myType element);
myType element();
bool offer(myType element);
myType peek();
myType poll();
myType remove();
};
How is an
operator=()
function supposed to look?
operator=
应该用 rhs
的值修改内部对象 (*this)
,然后按字面意思 return (*this)
.