1

キーワード「const」についての私の理解は、関数が変数を変更しないことをコンパイラーに伝えているということですが、次の例では変更されていますb.d。なぜ?

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

1 に答える 1

2

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;
}
于 2012-07-28T13:23:06.923 に答える