2017-09-27 15 views
0

ので、我々はC++で次のように書くと仮定します。a=b=5;基本的に私たちはa=5;を持っている場合はa=(b=5);R&L値はコンテキストに関連していますか?

は、私は5リテラルであり、したがって、それはR-値であることを知っていることを意味します。 aはL値です。同じことがb=5;

のために行く私たちは、それぞれa=(b=5);

a=b=5;を書く場合、私は今、次のことを言うことができ、何が起こるか、今思ったんだけど?

aについては、b=5は、R値であり、aはL値である。また、bはL値であり、5はR値です。

aのR値とは何ですか?

答えて

4

これは依存します。組み込みのoperator=は左辺参照を左辺に返します。だから、abint年代であれば、その後(b = 5)は左辺値式であり、あなたはab両方とも左辺値と5はprvalueことで、aにその左辺値を割り当てます。

これは、多くの人が左辺値参照を返すので、通常はオーバーロードされたでも同じですが、必ずしもそうである必要はありません。

左辺値を右辺値にキャストする場合は、std::moveを使用します。

関連する問題