两者之间是否有区别
class MyString {
...
MyString &operator=(MyString other) {
swap(s, other.s);
return (*this);
}
};
和
class MyString {
...
MyString &operator=(MyString other) {
swap(s, other.s);
return *this;
}
};
我在其他posts中读到,添加括号表示您是通过引用而不是值返回的。但是,如果定义了返回类型,则似乎没有什么不同。
答案 0 :(得分:4)
您引用的链接讨论了另一种情况。在这种情况下
255
这取决于您的喜好,因为他们两个都会做完全相同的事情。就个人而言,我希望*this == (*this)
避免不必要的括号
Operator precedence有时可以更改您取消引用某些内容的方式。想象一下这种情况
*this
您认为这里会发生什么?在做
*my_vector[0]
或
(*my_vector)[0]
正确的答案是第二个答案。有时您可能想更改这种行为,这就是*(my_vector[0])
出现的时候。