私はインターネット全体で+演算子を適切に実装する方法を検索し、見つけたすべての結果は次の手順を実行します。
const MyClass MyClass::operator+(const MyClass &other) const
{
MyClass result = *this; // Make a copy of myself. Same as MyClass result(*this);
result += other; // Use += to add other to the copy.
return result; // All done!
}
この「プロセス」についていくつか質問があります。
この方法で+演算子を実装するのは愚かなことではありません。最初の行で代入演算子(クラスをコピーします)を呼び出し、次に戻り値でコピーコンストラクター(クラスもコピーします)を呼び出します。値によって、それは最初のコピーを破壊し、新しいものを作成します..率直に言って実際には賢くありません...)
a = b + cと書くと、b + c部分がクラスの新しいコピーを作成し、次に'a='部分がそのコピーを自分自身にコピーします。b + cが作成したコピーを削除するのは誰ですか?
クラスを2回処理せずに、またメモリの問題なしに+演算子を実装するためのより良い方法はありますか?
前もって感謝します