More Effective C++ 条款7 千万不要重载&&,||和,操作符
2015-06-26 08:51
585 查看
1. 内置的&&和||操作符有"短路求值"的特性。对于&&如果第一个操作数为真,那么&&即返回为真,不再对第二个操作数进行求值,||则相反,利用这个特性可以写出下面的代码:
View Code
一旦进行重载,&&和||的左右操作数就是两个无分前后的参数而已,也就是说短路求值的特性没有了当函数被调用时,所有参数都被求值并传入而C++没有规定个参数的求职顺序,之前的代码就不能用了。
2. 对于内置的逗号操作符,从左向右对各个操作数求值,最后返回最右边的操作数(可以多个逗号)连用
一旦进行重载,从左至右依次求值的特性也会消失(就算重载为成员函数也是一样)。
3. 不能被重载的操作符:
. .* :: ?:
new delete sizeof typeid
static_cast dynamic_cast const_cast reinterpret_cast
char *p; ... if(p>0&&strlen(p)>10) ...
View Code
一旦进行重载,&&和||的左右操作数就是两个无分前后的参数而已,也就是说短路求值的特性没有了当函数被调用时,所有参数都被求值并传入而C++没有规定个参数的求职顺序,之前的代码就不能用了。
2. 对于内置的逗号操作符,从左向右对各个操作数求值,最后返回最右边的操作数(可以多个逗号)连用
一旦进行重载,从左至右依次求值的特性也会消失(就算重载为成员函数也是一样)。
3. 不能被重载的操作符:
. .* :: ?:
new delete sizeof typeid
static_cast dynamic_cast const_cast reinterpret_cast
相关文章推荐
- Effective C++ 条款20
- More Effective C++ 条款6 区别 increment/decrement 操作符的前置(prefix)和后置(postfix)形式
- [C++ primer]第五章笔记-语句
- g++编C++11/C++0x遇到的问题
- More Effective C++ 条款5 对定制的"类型转换函数"保持警觉
- More Effective C++ 条款4 非必要不提供 default constructor
- C++面试中的singleton类
- 面试时做过的几个C/C++笔试题
- c++编程注意事项
- C++对象内存分布(1) - 私有虚函数
- C\C++代码优化的27个方法
- 【学习笔记】【C语言】指向函数的指针
- More Effective C++ 条款3 绝对不要以多态(polymorphically)方式处理数组
- 【学习笔记】【C语言】返回指针的函数
- More Effective C++ 条款2 最好使用C++转型操作符
- C语言文件操作函数大全
- C语言控制用户输入的字符个数(curses.h代替conio.h)
- 程序编译是碰到的g++ 对c++11支持问题
- C语言标准
- C语言中,关键字static的作用