2017-01-04 5 views
4

constを使用する代わりにconst &を使用してメソッドまたは関数を宣言するのはどのような場合ですか?私はconstを使用して、このメソッドは、クラスのメンバーを変更しないが、私は後に参照符号を追加するときに何が起こっていると言っていることを知っている?メソッド宣言の後の参照符号C++

例:

int myclass::getInteger() const& { 
    return theInt; 
} 

が、これは仕方によって、いわゆるリファレンスquailifierですか?さらに重要なことに、 getIntegerメソッドについての参照符は何を表していますか?ありがとう!

答えて

5

はい、これはref-qualified member functionです。おかげ

myclass c; 
c.getInteger(); // OK 
myclass{}.getInteger(); // Compile-time error 
+0

しかし、それは唯一のMyClassの左辺値を使用して呼び出すことができるようにする方法を制限する実際のbenifitsものです:右側の左辺値参照表記のみmyclassの左辺値でこの関数は呼び出し可能になり、それはありますか? Ref qualified memberをこのような状況で機能させるために冗長ではないのですか? – Bonbin

+0

@Bonbinこれは珍しい要件ですが、このツールは、特定の関数を右辺値で呼び出すことが間違いなくバグである場合に利用できます。 – Quentin

+1

これは、rvalue参照修飾を使って過負荷を宣言するときに主に使用されます。 'getInteger()&&' – Oliv

関連する問題