什么是值类型
值类型是对c++表达式的分类 (不是对值的分类,和变量也没有关系)
值类型有哪些
lvalue:= 能取地址的表达式
- 变量名,方法名,数组名、数组名[下标]
- 函数返回的左值引用
- *指针
- 字符串常量
xvalue := 有地址但是不能取的表达式(生命周期马上要结束)
- std::move返回的结果
glvalue:= lvalue + xvalue = 有地址的表达式 (不管能不能取)
prvalue:= 没有地址的表达式(用于初始化对象)
- 常量(不包含字符串常量)
- &lvalue
- 计算操作符
+ - * / %
的结果 - lambda表达式
rvalue:= xvalue + prvalue
- c++17以前的旧概念,在c++17以后被弱化