一、几点注意:
1、在算数运算时,注意各个类型的值的范围,避免发生溢出。
2、除非必须,否则不用递增或递减运算符的后置版本。
二、成员访问运算符
string str = "A String !", *pStr = &str;
auto n = str.size();
n = (*pStr).size();
n = pStr->size();
n = *pStr.size(); // 错误pStr是一个指针,没有成员函数size()
三、条件运算符
string strFinalGrade = (grade < 60) ? "fail" : "pass"; // 条件运算符之间不宜过多的嵌套
四、sizeof运算符
sizeof运算符返回一条表达式或一个类型名字所占的字节数,其返回的值是 一个size_t类型的无符号数。
SalesData data, *p;
sizeof(SalesData); // 存储SalesData类型的对象所占的空间大小
sizeof(data); // data的类型的大小,即上一语句
sizeof p; // 指针所占的空间大小
sizeof *p; // p所指的类型的对象所占的空间大小
sizeof data.revenue;// SalesData类revenue成员变量对应的类型的大小
sizeof SalesData::revenue; // 同上, C++11 中新增
// 对数组执行sizeof运算符将得到真个数组所占的空间的大小
// 对string或vector对象执行sizeof运算只返回该类型固定部分的大小,不会
// 计算对象中的元素占用了多少空间
五、类型转换
1、隐式类型转换
2、强制类型转换
- 命名的强制类型转换:cast-name<type>(expression)
- 旧式的强制类型转换:type(expr); // 函数形式的强制类型转换 (type)expr; // C语言风格的强制类型转换
*注意:在程序中尽可能的避免强制类型转换,应该寻找其它的解决办法。