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

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

最佳答案

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

*this == (*this)
这取决于您的喜好,因为它们两者都会做完全相同的事情。就个人而言,我希望使用*this避免不必要的括号
Operator precedence有时可以更改您要取消引用某些内容的方式。想象一下这种情况
*my_vector[0]
您认为这里会发生什么?在干吗
(*my_vector)[0]
要么
*(my_vector[0])
正确的答案是第二个。有时您可能想更改此行为,这就是()出现的时候。

关于c++ - 复制赋值运算符返回* this vs(* this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64781202/

相关文章:

C++ 组合 2 个数组,数据有序

c++ - 使用引用时多态性并不总是有效

javascript - 了解 Node RED 中的 this._(STRING) 调用

c++ - 使用 OPEN CASCADE 的表面交叉点

c++ - C++中的事件处理

c++ - 计算字符串中相同的数字并将它们打印为星星 C++

Perl 哈希值 : $hash{key} vs $hash->{key}

python - Python 函数列表

c++ - "this"级联如何工作?

javascript - 将变量传递给在循环中调用的异步 JavaScript 函数 (React)