2017-09-27 114 views
0

所以假設我們用C以下++:a=b=5;這基本上意味着a=(b=5);R&L值是否與其上下文相關?

如果我們有a=5;我知道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)是一個左值表達式,你是左值分配給a,與ab均爲左值和5是一個prvalue。

對於超載operator=,這通常也是一樣的,因爲大多數人返回一個左值引用,但它不一定是。

如果你想將一個左值賦給右值,那麼你使用std::move