2017-01-28 23 views
1

私が過負荷状態にすると、言うことができます、C++C++の演算子( '+'、 '+ =')

MyClass MyClass::operator+(MyClass _c){ 
    //code here 
} 

内のクラスのための '+' 演算子は、それが自動的に 'に適用されます+ = '演算子?コンパイラは、より長い同値部分(a + = b < - > a = a + b)の代わりに自動的にそれを置き換えますか?それとも、ランタイム演算子関数ですか?

+1

これはありません。少なくともMSVC++コンパイラは、それが有効でないと考えるようです。 – jumper0x08

+1

'operator + ='を 'operator +'と書くことは非常に高価です - これから一時的なLHSを作成し、RHSを追加して一時的な結果を割り当てます。これは、もう少し簡単な方法で、 'operator + ='と書いて、 'operator +'を実装します。 – Kos

+0

また、従来、演算子+()はオペランドを変更しない(すなわち、a + bはaもbも変更しない)。これは 'const'を使って表現できます。 – Peter

答えて

3

番号です。あなたもそれらを過負荷にする必要があります。