目录
声明:本文是深蓝学院C++课程的个人笔记,仅供学习参考。
1. 引入
1.1 表达式的定义
- 最基本的表达式: 变量、字面值
- 表达式通常包含operator(操作符)
- operator(操作符)的特性:
- 接受几个操作数:一/二/三元
// 一元操作符 ! ~ ++ -- delete sizeof void + - // 二元操作符 + - (又是一元,又是二元) && % // 三元操作符 String type = score < 60 ?"不及格" :"及格";
- 操作数的类型--类型转换
- 操作数是左值还是右值
- 结果的类型
- 结果是左值还是右值
- 优先级 与 结合性
- 操作符的重载
比如给一个Class重载加法+符号,但是重载不能改变原来操作符的所能接受元素的个数、优先级、结合性。
- 接受几个操作数:一/二/三元
2. 左值与右值
Citation: https://zh.cppreference.com/w/cpp/language/value_category
*说实话,这个定义太复杂了。。。我还是有点蒙蔽*
2.1 glvalue (generalized) 泛左值
- 泛左值 (glvalue)(“泛化 (generalized)”的左值)是其求值确定一个对象、位域或函数的个体的表达式;
const int x = 2;
x = 3; //不行,所以说左值也可能'不能够'放在等号的左边
2.2 prvalue (pure) 纯右值
- 计算某个运算符的操作数的值或为 void 表达式(这种纯右值没有结果对象)
- 初始化某个对象或位域(称这种纯右值有一个结果对象)。除 decltype 外,所有类和数组的纯右值都有结果对象,即使它被舍弃也是如此。结果对象可以是变量,由