More Effective C++ 阅读笔记(六)--哪些运算符不能重载
来源:互联网 发布:珠海java编程培训 编辑:程序博客网 时间:2024/05/09 23:43
转载于:http://blog.csdn.net/andylin02/article/details/2774543
More Effective C++ 阅读笔记(六)--哪些运算符不能重载
黑月亮 发表于 2005-10-3 16:22:00
下面这些操作符不能重载
"&&" ,"||" , "," , "." , ".*" , "::" , "?:"
new delete sizeof typeid
static_cast dynamic_cast const_cast reinterpret_cast
下列操作符你可以重载
operator new operator delete
operator new[] operator delete[]
+ - * / % ^ & | ~
! = < > += -= *= /= %=
^= &= |= << >> >>= <<= == !=
<= >= && || ++ -- , ->* ->
() []
原因
例如:
if (expression1 && expression2) ...
对于编译器来说,等同于下面代码之一:
if (expression1.operator&&(expression2)) ... // when operator&& is a member function
if (operator&&(expression1, expression2)) ... // when operator&& is a global function
这好像没有什么不同,但是函数调用法与短路求值法是绝对不同的。首先当函数被调用时,需要运算其所有参数,所以调用函数functions operator&& 和 operator||时,两个参数都需要计算,换言之,没有采用短路计算法。第二是C++语言规范没有定义函数参数的计算顺序,所以没有办法知道表达式1与表达式2哪一个先计算。完全可能与具有从左参数到右参数计算顺序的短路计算法相反。
因此如果你重载&&或||,就没有办法提供给程序员他们所期望和使用的行为特性,所以不要重载&&和||。
- More Effective C++ 阅读笔记(六)--哪些运算符不能重载
- <More Effective C++>笔记--运算符
- C++之尽量不要重载&&,||或者,运算符(7)---《More Effective C++》
- <<More Effective C++>>读书笔记2: 运算符
- C++哪些运算符不能重载
- 《More Effective C++》阅读记录
- more effective C++阅读笔记
- More Effective C++ 阅读笔记
- 《More Effective C++》笔记
- 侯捷 more effective c++(WQ中文版) 阅读笔记1
- More Effective C++:不要重载的操作符
- 《More Effective C++》7:千万不要重载 &&, ||, 和 ,操作符
- More Effective C++----(7)不要重载"&&"、"||"、","
- 《more effective c++》笔记4
- More Effective C++学习笔记(2)-运算符
- 《Effective C++》阅读笔记
- 《Effective C++》阅读笔记
- C++中有哪些运算符不能重载?
- ZOJ 2923 题解
- Android中启动,分享,卸载应用程序
- 怎么在user版本下,开启log
- Java数组详解
- git常用见错误记录
- More Effective C++ 阅读笔记(六)--哪些运算符不能重载
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序
- cocos2d-x控件使用CCControlButton<代码演示>
- UVa--12289 One-Two-Three
- [Android布局]在程序中设置android:gravity 和 android:layout_Gravity属性
- 一个让你迅速理解Javabean的实例
- codeforces 82/A
- Java线程总结(3):线程通信