1.左值与右值
当一个对象被用作右值的时候,用的是对象的值(内容);
当一个对象被用作左值的时候,用的是对象的身份(在内存中的位置)。
在需要右值的地方可以用左值来代替,但不能把右值当成左值(位置)使用。当一个左值被当成右值使用时,实际使用的是它的内容(值)。
用到左值的常见运算符:
1.赋值运算符
2.取地址符作用于左值运算对象,返回一个指向该运算的指针,指针是右值。
3.内置解引用符、下标运算符、迭代器解引用运算符、string和vector的下标运算符
4.内置类型和迭代器的递增递减运算符作用于左值对象
5.算数表达值为右值
2.求值顺序
四种运算符规定了求值顺序:
- && 先求左侧运算对象值,当左侧对象值为真时,才继续求右侧对象值。
- **||**先左后右,左为假时,才执行右
- ?:
- ,
bool b = true;
bool c = -b;//c也为真,非0;
后置递增运算符优先度高于解引用运算符
cout << *pbeg++ << endl;
输出当前值并将pbeg向前移动一个元素。
3.显示转换
命名强制转换
1.static_cast