價值範疇意義

根據這些表示式的結果,為 C++中的表示式分配一個特定的值類別。表示式的值類別可以影響 C++函式過載決策。

值類別確定關於表示式的兩個重要但獨立的屬性。一個屬性是表示式是否具有同一性。如果表示式引用具有變數名稱的物件,則該表示式具有標識。變數名可能不包含在表示式中,但物件仍然可以包含一個。

另一個屬性是隱式移出表示式的值是否合法。或者更具體地說,表示式在用作函式引數時是否將繫結到 r 值引數型別。

C++定義了 3 個值類別,它們代表了這些屬性的有用組合:左值(具有標識但不可移動的表示式),xvalue(具有可移動標識的表示式)和 prvalue(沒有可移動標識的表示式)。C++沒有沒有標識且無法移動的表示式。

C++定義了另外兩個值類別,每個值類別僅基於以下屬性之一:glvalue(帶有標識的表示式)和 rvalue(可以移動的表示式)。這些作為先前類別的有用分組。

此圖表用作說明:

StackOverflow 文件