C++ Primer 读书笔记3
关键概念
- 重载运算符——P120
- 位运算符——P135
- 强制转换——P144
cast-name< type>(expression) type是转换的目标类型而expression是要转换的值。
cast-name包括static_cast / dynamic_cast / const_cast / reinterpret_cast 。
注意点
当一个对象被用作运算符右值的时候,用的是对象的值;当对象被用作左值的时候,用的是对象的身份(内存中的位置)。
bool b=true;
bool b2=-b; //b2是true
//布尔变量b的值为真,参与运算时将会提升为整数值1,对它求负后为-1.将-1转换为布尔值为true(不等于0).转换为真后为1。
整数和整数相除还是整数
只有四种运算符明确规定了运算对象的求值顺序。
- &&
- ||
- ? :
- ,
条件运算符的优先级非常低,通常需要在它两端加上括号。
位运算符
运算符 | 功能 | 用法 |
---|---|---|
- | 位求反 | ~expr |
<< | 左移 | expr1<< expr2 |
>> | 右移 | expr1>>expr2 |
& | 位与 | expr&expr |
| | 位或 | expr|expr |
^ | 位异或 | expr^expr |
小技巧
//返回元素个数
constexpr size_t sz=sizeof(ia)/sizeof(*ia);
int arr2[sz];