1

我对关键字“const”的理解是它告诉编译器,该函数不会修改任何变量,但在下面的示例中它会改变b.d。为什么?

myClass operator + (myClass b) const { b.d += d; return b; }
4

1 回答 1

2

const函数不能修改this(调用对象)的变量(如果变量不是mutable)。在示例this中未修改。所以,这是正确的。

变量b是 class 的另一个对象myClass

myClass operator + (myClass b) const

myClass operator + (const myClass* this, myClass b)

更好地使用member-operator +=and not member operator +,例如

myClass& myClass::operator += (const myClass& rhs)
{
    d += rhs.d;
    return *this;
}

myClass operator + (const MyClass& lhs, const MyClass& rhs)
{
   myClass tmp(lhs);
   tmp += rhs;
   return tmp;
}
于 2012-07-28T13:23:06.923 回答