返回类型operator = C++

Jud*_*nga 3 c++

我只是要澄清一下.比方说,我想覆盖operator =.根据我的阅读,这应该返回对象的参考.正如我从其他来源读到的那样,Reference只是该对象的替代名称.我可以这样做吗?

MyObject MyObject::operator =(const MyObject &o2) {
    //insert processing code here
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

而不是这个?

MyObject& MyObject::operator =(const MyObject &o2) {
    //insert processing code here
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

vso*_*tco 9

在第一种情况下,您返回的是副本*this,而不是对其的引用*this.所以你应该坚持第二种情况.这两种情况之间存在很大差异,特别是对于复制"昂贵"的类型.