参照修飾子 | Programming Place Plus 用語集

トップページ用語集

名称 🔗

解説 🔗

C++ において、静的メンバ関数でないメンバ関数宣言に付加し、そのメンバ関数が lvalue に対して呼び出されているか、rvalue に対して呼び出されているかに応じた呼び分けを行うための機能です。

参照修飾子は &&& の2種類があり、静的メンバ関数でないメンバ関数の宣言の末尾に付与することで指定します。参照修飾子は関数シグネチャの一部とみなされ、異なる参照修飾子を付加されたメンバ関数をオーバーロードできます。

class C {
public:
    void func() &;
    void func() &&;
};

ただし、参照修飾子がある/ないでオーバーロードすることはできません。

& が付加されたメンバ関数は、呼び出すオブジェクトが lvalue の場合に優先的に使用されます。同様に、&& が付加されたメンバ関数は、呼び出すオブジェクトが rvalue の場合に優先的に使用されます。

C c;
c.func();      // lvalue に対する func() が呼び出される
C().func();    // rvalue に対する func() が呼び出される

それぞれの場合で、暗黙のオブジェクト仮引数の型が異なり、& を付加したメンバ関数では lvalueリファレンスとなり、&& を付加したメンバ関数では rvalueリファレンスとなります。

詳細な解説は、新C++編「オブジェクトのムーブ」のページを参照してください。


参考リンク 🔗

更新履歴 🔗


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Facebook でシェア X で ポストフォロー
LINE で送る noteで書く rss1.0 取得ボタン RSS
管理者情報 プライバシーポリシー
先頭へ戻る