2016-02-09 8 views
13

type of thisprvalue( "純粋な" rvalue)ポインタであり、ポインタへのポインタおよび/またはポインタへのポインタ(そのインスタンス変数へのアクセスに影響を及ぼす)にすることができます。キーワードconstまたはvolatileを、それが属する関数定義の最後に追加します。「this」が右辺値のときはいつですか?

thisは時々(間違って)constポインタであると言われています。おそらく、「thisに代入することはできません。評価値として、本質的に割り当て不可能であるため、constという概念の必要はありません。

また、C++ 11では、rvalueまたはlvalueがコールの解決に影響する場合がありますが、可能性を試してみたところ、ケースがあるかどうかはわかりませんthisconst左辺ポインタではなく、右辺ポインタです。

は、この区別は、このような const左辺値のポインタを使用することができる右辺値ポインタが const左辺値ポインタが使用できないことを使用することができ、コンテキストとして、プログラマの観点から、本当の違いを作る場合がありますrvalueポインタはできませんか、またはその違いがコールの解決に影響するのはどこですか?

答えて

6

thisが正価であるという明白な結果は、&thisが不正であることです。したがって、組み込み単項演算子&は、 "左辺値ポインタが使用できない定数左辺ポインタを使用できる場所"の例を示しています。まったく同じ根本的理由から、thisへの参照の直接結合は不可能です。

また、thisのprvalueらしスカラ右辺値は、CV-修飾型を持つことができないのでthis自体は、const又はvolatileすることができないことを意味します。

これらの区別に基づいて、非難解な現実のコード例を作成するのはおそらく難しいでしょう。

+1

もう1つの結果は、ラムダで 'this 'をキャプチャすることが特別な言語の場合です(通常はlvaluesしかキャプチャできないため) –

+0

'&this'は違法であるため、右辺値参照をとる関数には? 「これを」通っている通話の通話の解像度がその価値の状態によって影響を受けないことを証明するには十分でしょうか?あるいは、[引数としての値の受け渡しをブロックする](http://stackoverflow.com/questions/6307526/c0x-const-rvalue-reference-as-function-parameter)のようなものが 'this'にも当てはまるでしょうか? –

関連する問題