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

时间:2020-11-11 05:55:08

标签: c++ reference this

两者之间是否有区别

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中读到,添加括号表示您是通过引用而不是值返回的。但是,如果定义了返回类型,则似乎没有什么不同。

1 个答案:

答案 0 :(得分:4)

您引用的链接讨论了另一种情况。在这种情况下

255

这取决于您的喜好,因为他们两个都会做完全相同的事情。就个人而言,我希望*this == (*this) 避免不必要的括号

Operator precedence有时可以更改您取消引用某些内容的方式。想象一下这种情况

*this

您认为这里会发生什么?在做

*my_vector[0]

(*my_vector)[0]

正确的答案是第二个答案。有时您可能想更改这种行为,这就是*(my_vector[0]) 出现的时候。