返回C++中运算符=的类型

Return type of operator = in C++

本文关键字:类型 运算符 C++ 返回      更新时间:2023-10-16

我只需要澄清一下。例如,我想覆盖运算符=。根据我所读到的内容,这应该会返回一个对对象的REFERENCE。正如我从另一个来源所读到的,引用只是对象的一个替代名称。那么我可以这么做吗?

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

而不是这个?

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

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