您的位置:首页 > 编程语言 > C语言/C++

《C++ Primer(第5版)》学习笔记:第4章 表达式

2014-05-11 01:17 274 查看
函数调用:也是一种特殊的运算符,它对运算对象的数量没有要求。

重载运算符:使用重载运算符时,其包括运算对象的类型和返回值的类型,都是由该运算符定义的;但是运算对象的个数、运算符的优先级和结合律都是无法改变的。

关于“左值”和“右值”的归纳:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。ps:左值、右值的具体概念还需要进一步理解。

求值顺序:result = f1() * f2(); 编译器无法知道f1与f2哪个函数先调用。求值顺序一般无法确定,四个运算符例外:&&、||、?:、,。

算术运算符:C++11新标准规定商一律向0取整(即直接切除小数部分)。

复合赋值运算符:sum+=num; 与sum=sum+num;的区别:前者求值一次而后者求值两次,但在很多地方除了对程序性能有些许影响外几乎可以忽略不计。

递增和递减运算符:除非必须,否则不用递增递减运算符的后置版本。这是因为后置版本需要将原始值存储下来以便于返回这个未修改的内容。

位运算符:关于符号位如何处理没有明确的规定,所以强烈建议仅将位运算符用于处理无符号类型。

sizeof运算符:在sizeof的运算对象中解引用一个无效指针仍然是一种安全的行为,因为指针实际上并没有被真正使用。C++11新标准允许我们使用作用域运算符来获取类成员的大小。对string或者vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间。

隐式类型转换:当数组被用作decltype关键字的参数,或者作为取地址符(&)、sizeof及typeid等运算符的运算对象时,数组不会隐式地转换为指针。

命名的强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: