ホームページ >バックエンド開発 >C++ >C のコピー代入演算子から参照を返すのはなぜですか?

C のコピー代入演算子から参照を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-08 08:52:12771ブラウズ

Why Return a Reference from the Copy Assignment Operator in C  ?

コピー代入演算子: 戻り値の型として参照を使用する理由

コピー代入演算子から参照または 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。