C でメンバー関数を宣言する場合、パラメーター リストの後に & および && シンボルが使用される場合があります。 ref 修飾子として知られるこれらの記号は、暗黙的なオブジェクト パラメーターの参照型を示します。
単一のアンパサンド (&) は、メンバー関数が呼び出されることを示します。オブジェクトが左辺値参照の場合。左辺値参照は、特定のメモリ位置に格納されている既存のオブジェクトを参照します。次のコード スニペットは、その使用法を示しています。
class wrap { public: operator obj() const & { ... } operator obj() && { ... } private: obj data_; };
オブジェクトが左辺値参照の場合、& ref 修飾子を持つ演算子 obj() 関数が呼び出されます。これは、左辺値式と右辺値式の両方を使用して呼び出すことができることを意味します。
ref 修飾子がない場合、暗黙的なオブジェクト パラメーターは左辺値参照として扱われます。これにより、左辺値式と右辺値式の両方を使用してメンバー関数を呼び出すことができます。以下のコードは、この動作を示しています。
struct foo { void bar() {} }; int main() { foo().bar(); // (always fine) foo f; f.bar(); // (always fine) }
&& ref 修飾子は、オブジェクトが右辺値参照の場合にメンバー関数が呼び出されることを示します。右辺値参照は、特定のメモリ位置にバインドできない一時オブジェクトまたは式で評価されるオブジェクトを指します。
次の表は、単一のアンパサンド (&) と、単一のアンパサンド (&) の違いをまとめたものです。アンパサンドなし:
Ref-Qualifier | Reference Type | Can be Invoked With |
---|---|---|
& | lvalue reference | lvalue and rvalue expressions |
None | lvalue reference | lvalue and rvalue expressions |
これらの参照修飾子を理解することは、メンバー関数を正しく実装し、それに基づいてその動作を調整するために重要です。コンテキスト。
以上がC メンバー関数: パラメーター リストの `&` と `&&` は何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。