我对关键字“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;
}