C++学习笔记:为什么不要重载逻辑与和逻辑或&& || 操作符
来源:互联网 发布:绝地求生什么时候优化 编辑:程序博客网 时间:2024/05/29 02:24
理论知识:
1—&&和||是C++中非常特殊的操作符
2—&&和||内置实现了短路规则
3—操作符重载是靠函数重载来实现的
4—操作数作为函数参数传递
5—C++的函数参数都会被求值,无法实现短路规则
举例说明:
// 逻辑与和逻辑或运算符重载说明.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;//&&结合顺序是从左至右class Test{public:int i;Test(int i){this->i = i;}Test operator+(const Test& obj){Test ret(0);cout << "执行+号重载函数" << endl;ret.i = i + obj.i;return ret;}bool operator&&(const Test& obj){cout << "执行&&重载函数" << endl;return i&&obj.i;}};int _tmain(int argc, _TCHAR* argv[]){int a1 = 0;int a2 = 1;cout << "注意,&&操作符的结合顺序是从左向右" << endl;if (a1 && (a1 + a2)){cout << "有一个是假,则不再执行下一个表达式的计算" << endl;}Test t1 = 0;Test t2 = 1;if (t1 && (t1 + t2)){//t1&&t1.operator+(t2)//t1.operator&&(t1.operator+(t2))//虽然可以执行,但是破坏了 短路规则cout << "两个函数都被执行了,而且是线执行了+" << endl;}return 0;}
0 0
- C++学习笔记:为什么不要重载逻辑与和逻辑或&& || 操作符
- 逻辑与和逻辑或的重载
- 逻辑与和逻辑或运算符重载
- 逻辑与、逻辑或 重载
- 避免重载&&(逻辑与)、||(逻辑或)或,(逗号)操作符
- 逻辑与和逻辑或运算符
- “逻辑和”与 “逻辑或”运算符
- 括号,逻辑与,逻辑或--运算符重载
- 逻辑与&&、逻辑或||、==操作符的规则
- 逻辑或操作符
- 小括号'()'运算符重载、逻辑与'&&'、逻辑或'||'运算符重载说明(需要了解)
- 为什么不要重载 && 和 || 操作符!!!
- 为什么不要重载&&和||操作符
- 黑马程序员-c语言学习逻辑与&&、逻辑或||、逻辑非!总结
- 逻辑与和逻辑或运算符返回值
- 逻辑与’&&’和逻辑或’||’的陷阱
- js中的逻辑或和逻辑与
- 布尔操作符:逻辑或 (||)、逻辑与(&&)、逻辑非(!)
- UI基础UIButton
- SOA-面向服务架构
- jQuery自学教程(五)——事件对象
- WWDC2014之App Extensions学习笔记
- @Repository、@Service、@Controller 和 @Component
- C++学习笔记:为什么不要重载逻辑与和逻辑或&& || 操作符
- python string unicode字符串
- svm小结
- android子线程handler获取数据
- Android存储子系统
- Catch That Cow
- Android AccessibilityService 使用详解
- java中判断字符串是否为数字的方法的几种方法
- UIPageController的使用