ホームページ >バックエンド開発 >C++ >C メンバー関数の参照修飾子 (& および &&) とは何ですか? また、それらはオブジェクト参照にどのように影響しますか?

C メンバー関数の参照修飾子 (& および &&) とは何ですか? また、それらはオブジェクト参照にどのように影響しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-10 15:22:12380ブラウズ

What are Reference Qualifiers (& and &&) in C   Member Functions and How Do They Affect Object References?

メンバー関数宣言の参照修飾子

C では、単一アンパサンド (&) と二重アンパサンド (&&) を参照修飾子として使用できます。メンバー関数宣言内。これらの修飾子は、非静的メンバー関数の暗黙的なオブジェクト パラメーターの型に影響します。

単一アンパサンド (単一参照)

単一アンパサンド (&) は、メンバー関数は、オブジェクトが左辺値参照である (つまり、既存のオブジェクトを参照している) 場合に呼び出すことができます。つまり、関数は参照によって渡されるオブジェクトを使用して呼び出されます。

次の例は、単一の参照修飾子の使用を示しています。

class wrap {
public:
   operator obj() const & { ... } // Copy from me.
};

ここでは、演算子 obj( ) 関数は、my_object.operator obj() などのオブジェクト参照で呼び出すことができます。

No との比較アンパサンド

参照修飾子が指定されていない場合、暗黙的なオブジェクト パラメーターはデフォルトで左辺値参照になります。したがって、次の関数宣言は上記の関数宣言と同等です。

class wrap {
public:
   operator obj() const { ... } // Copy from me.
};

補足

  • 二重アンパサンド (&&) は、右辺値参照 (つまり、一時オブジェクトを参照します)。オブジェクトが次の値に変換されるときに呼び出されます。
  • 参照修飾子は、左辺値参照と右辺値参照を正しく処理するのに役立ち、不必要なコピーを回避することでパフォーマンスを最適化できます。
  • メンバー関数が正しく呼び出され、確実に呼び出されるようにするには、正しい参照修飾子を使用することが重要です。効率的に。

以上がC メンバー関数の参照修飾子 (& および &&) とは何ですか? また、それらはオブジェクト参照にどのように影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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