我对关键字“const”的理解是它告诉编译器,该函数不会修改任何变量,但在下面的示例中它会改变b.d。为什么?
myClass operator + (myClass b) const { b.d += d; return b; }
我对关键字“const”的理解是它告诉编译器,该函数不会修改任何变量,但在下面的示例中它会改变b.d。为什么?
myClass operator + (myClass b) const { b.d += d; return b; }
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;
}