私はC++にかなり慣れておらず、カスタム演算子について学ぼうとしています。私が現在抱えている問題は、私自身の+=演算子とそれを実行するための最良の方法を定義することに関連しています。これには、追加できるpublic intメンバー(intValue)を持つ単純なクラスが含まれます。私が一度に1つずつ試した次の2つのコード例は、私が知る限り、私のプログラムでまったく同じように動作します。「まったく同じ」とは、同じ結果が得られ、同じ数のオブジェクトを作成することを意味します。
どちらがより正しいか(標準的な方法)、そしてその理由は何ですか?
Utility& operator +=(Utility& left, Utility right)
{
return left = left + right;
}
または
void operator +=(Utility& left, Utility right)
{
left = left + right;
}
そして、それが重要な場合、彼らが呼ぶ演算子:
Utility operator +(Utility left, Utility right)
{
return Utility(left.intValue + right.intValue);
}
このクラスは、コンストラクターが呼び出されるたびにメッセージを出力するため、新しいオブジェクトが作成されているかどうかを確認できます。これに基づいて、ここで試している+ =の2つの形式では、同じ数のオブジェクトが作成されます。