小朋友学C++(44):运算符重载
咱们定义一个结构体Point,用来表示平面上的点:
struct Point{ int x; int y;};
咱们经常用到的运算符“+”、“-”、“*”、“/”,只能用于int, float, double, char类型的变量之间。两个Point的变量,并不能使用这些运算符来进行运算。
在C++中,咱们可以通过重载运算符(operator)的方法,来实现少量复杂数据类型变量的运算。
例1
#include <iostream>using namespace std;struct Point{ int x; int y; Point operator+ (Point &b) { Point p; p.x = (this->x + b.x) / 2; p.y = (this->y + b.y) / 2; return p; }};int main(){ Point p1, p2, p3; p1.x = 10; p1.y = 15; p2.x = 90; p2.y = 25; p3 = p1 + p2; cout << p3.x << ',' << p3.y << endl; return 0;}
运行结果:
50,20
分析:
这里通过重载运算符“+”,实现了两个Point变量之间的加法运算。学过初中平面几何的人应该看得出来,这里两个Point变量相加得到的结果是这两点之间的中点。
在C++中,有些运算符可以重载,有些运算符不可以重载。
(1)下面是可重载的运算符列表:
双目算术运算符:+ (加),-(减),*(乘),/(除),% (取模)关系运算符: ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于)逻辑运算符:||(逻辑或者),&&(逻辑与),!(逻辑非)单目运算符:+ (正),-(负),*(指针),&(取地址)自增自减运算符:++(自增),--(自减)位运算符: | (按位或者),& (按位与),~(按位取反),^(按位异或者),,<< (左移),>>(右移)赋值运算符: =, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=空间申请与释放: new, delete, new[ ] , delete[]其余运算符: ()(函数调用),->(成员访问),,(逗号),[](下标)
(2)下面是不可重载的运算符列表:
.:成员访问运算符.*, ->*:成员指针访问运算符:::域运算符sizeof:长度运算符?::条件运算符#: 预解决符号
少儿编程答疑、算法答疑请加微信307591841或者QQ307591841
公众号.jpg
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 小朋友学C++(44):运算符重载
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 小朋友学C++(44):运算符重载