コピー代入演算子: 戻り値の型として参照を使用する理由
コピー代入演算子から参照または const 参照を返すことは、 C.これにより、オブジェクトの割り当てが効率的に行われ、不必要なコピーが回避されます。コピーを返すのとは異なり、参照を返すと、オブジェクト間で値を直接コピーすることで最小限の作業が可能になります。
次のコード スニペットを考えてみましょう。
A a1(param); A a2 = a1; A a3; a3 = a2; // Assignment operator
演算子= は次のように定義されています。
A A::operator=(const A& a) { if (this == &a) return *this; param = a.param; return *this; }
参照を返すと、代入ごとにコンストラクターとデストラクターを呼び出すオーバーヘッドがなくなります。代わりに、単にメモリ内の値を更新するだけです。
対照的に、コピーを返すには、新しいオブジェクトを作成し、割り当てられたオブジェクトから値をコピーし、割り当てのたびに一時コピーを破棄する必要があります。この無駄なオーバーヘッドは、チェーン a = b = c のような複雑な代入で特に顕著になります。
参照を返すことにより、コピー代入演算子は次のようになります。
以上がC のコピー代入演算子から参照を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。