【发布时间】:2020-04-01 07:41:01
【问题描述】:
当重载赋值运算符时,我注意到许多示例通过引用返回,然后返回一个延迟的“this”指针,如下所示:
Myclass &operator=(const Myclass &rhs){
if(this==&rhs)
return *this;
value=rhs.value;
return *this;
}
我不明白的是为什么它不只返回指针'this'而不取消引用它,因为指针的值是一个地址? 肯定返回一个取消引用的指针会返回指向的值,而不是标头中 & 指定的地址。
【问题讨论】:
-
这样做是为了让您可以将调用链接到操作员。而返回类型中的
&表示reference,not地址。 C++ 使用上下文敏感的语法,相同的语法在不同的上下文中可以有不同的含义。比如,在某些情况下&表示“地址”,在其他情况下表示“引用”。 -
这就是引用的工作方式。考虑
int x; int &y = x;(注意x之前缺少&)。
标签: c++ pointers operator-overloading return-by-reference