C++左值、右值
值类别
在 C++11之后,C++根据
- 被标识:可通过不同标识符指代同一实体。(对象/内存)
- 可移动:可作为移动语义函数的参数,例如移动构造,移动赋值。
将值分为以下类别:
- 泛左值:被标识
- 左值:被标识且不可移动
- 将亡值:被标识可移动
- 右值:可移动
- 将亡值:被标识可移动
- 纯右值:不被标识且可移动
左值
int a = 1;
a是一个左值,左值是关联了名称的内存位置。
纯右值
int a = 1;
1是一个纯右值,纯右值是指不被标识且可移动的值,例如字面量。
将亡值
using std::string;
string get()
{
string ret = "abc";
return ret;
}
string str = get();
get() 函数调用会产生一个临时变量赋给str,这个临时变量是将亡值,此时的赋值是移动语义(c++11之前是复制语义)。
Original: https://www.cnblogs.com/hggzhang/p/16400733.html
Author: 张宏港
Title: C++左值、右值
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/588317/
转载文章受原作者版权保护。转载请注明原作者出处!