【问题标题】:Copy assignment operator returning *this vs (*this)复制赋值运算符返回 *this vs (*this)
【发布时间】:2020-11-11 05:55:08
【问题描述】:

有没有区别

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

【问题讨论】:

  • 在您的情况下,附加括号没有任何区别。使用你喜欢的任何编码风格。

标签: c++ reference this


【解决方案1】:

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

*this == (*this)

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

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

*my_vector[0]

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

(*my_vector)[0]

或者

*(my_vector[0])

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 2015-08-02
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2015-05-31
    • 2023-03-07
    相关资源
    最近更新 更多