キーワード「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
はクラスの別のオブジェクトですmyClass
。
myClass operator + (myClass b) const
は
myClass operator + (const myClass* this, myClass b)
使用する方が良いmember-operator +=
、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;
}