【发布时间】:2020-07-30 20:55:50
【问题描述】:
我想知道,在重载赋值运算符的情况下,我们为什么不只使用this 而没有*?如果我只使用this,它会给我一个编译器错误。为什么我们不将* 与arr[i] 或任何其他变量一起使用,例如第二个和第三个示例中的return x?
Myclass &Myclass::operator=(const Myclass &rhs)
{
if(this==&rhs)
return *this;
}
double& setValues( int i ) {
return vals[i]; // return a reference to the ith element
}
int& setValues(int x) {
return x; // return address/reference of x
}
【问题讨论】:
-
因为
this是一个指向当前对象的指针,所以如果你想要一个对象的引用,你必须取消引用它 -
*x表示x[0] -
@M.M 虽然正确,但我认为这只会在这里造成更多混乱
-
请注意,示例 3 看起来像炸弹。它返回一个对
x的引用,而x是一个局部变量。 -
@logan_92 这是一件很奇怪的事情,但
this很奇怪。如果我没记错的话,this是指针的唯一原因是当this添加到语言中时引用不存在。
标签: c++