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

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

Mary-Kate Olsen
リリース: 2024-12-08 08:52:12
オリジナル
774 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート