复制赋值运算符返回*this vs(*this)

Copy assignment operator returning *this vs (*this)

本文关键字:this vs 赋值运算符 复制 返回      更新时间:2024-09-23

之间有区别吗

class MyString {
...
MyString &operator=(MyString other) {
swap(s, other.s);
return (*this);
}
};

class MyString {
...
MyString &operator=(MyString other) {
swap(s, other.s);
return *this;
}
};

我在其他一些帖子中读到,添加括号表示您是通过引用而不是值返回的。但如果定义了返回类型,似乎没有什么区别。

您引用的链接讨论了不同的情况。在这种情况下,

*this == (*this)

这取决于你的喜好,因为他们两个会做完全相同的事情。就我个人而言,我更喜欢*this,以避免不必要的括号

运算符优先级有时会改变取消引用的方式。想象一下的这种情况

*my_vector[0]

你认为这里会发生什么?它在做吗

(*my_vector)[0]

*(my_vector[0])

正确答案是第二个。有时你可能想要改变这种行为,这时()就来了。