【发布时间】:2016-04-06 09:30:19
【问题描述】:
假设我想覆盖operator =,这样我就可以做类似的事情
Poly p1; // an object representing a polynomial
Poly p2; // another object of the same type
p2 = p1; // assigns all the contents of p1 to p2
然后在我的operator = 的实现中,我有这样的东西:
Poly& Poly::operator=(const Poly &source) {
// Skipping implementation, it already works fine…
return *this;
}
不要介意实现,它已经可以正常工作了。
我担心的是当你return *this 时会发生什么?我知道它返回对对象的引用,但这是怎么回事?
p2 = &p1
【问题讨论】:
-
由于
I am just new to C++部分在一次编辑中丢失了,并且由于p2 = &p1的变体在cmets 中重新出现...Poly& Poly::operator=声明中的&意味着操作符返回一个引用 - 在这种情况下是对自身的引用,这正是return *this;所做的。另一方面,&p1中的&计算为p1的地址,这是一个Poly*指针,不能分配给Poly对象。不要混淆&在两种不同上下文中的两种含义。
标签: c++ assignment-operator copy-assignment