博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
运算符重载
阅读量:4447 次
发布时间:2019-06-07

本文共 1159 字,大约阅读时间需要 3 分钟。

定义一个结构体Point,用来表示平面上的点:

struct Point{    int x; int y; };

咱们经常用到的运算符“+”、“-”、“*”、“/”,只能用于int, float, double, char类型的变量之间。两个Point的变量,并不能使用这些运算符来进行运算。

在C++中,咱们可以通过重载运算符(operator)的方法,来实现一些复杂数据类型变量的运算。

例1

#include 
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:长度运算符?::条件运算符#: 预处理符号

 

转载于:https://www.cnblogs.com/alan-blog-TsingHua/p/10867101.html

你可能感兴趣的文章
Zookeeper zkui-zookeeper图形化管理工具
查看>>
线段树
查看>>
LLVM提议向C语言中加入模块机制
查看>>
免费学习视频
查看>>
Winodws10 &system进程占用磁盘100%
查看>>
css样式优先级
查看>>
遇见未知的自己
查看>>
js中return;、return true、return false;区别
查看>>
关于list的一些作业
查看>>
bzoj 2818: Gcd
查看>>
bzoj千题计划316:bzoj3173: [Tjoi2013]最长上升子序列(二分+树状数组)
查看>>
JDK1.8之后匿名内部类访问方法中的局部变量不用加final修饰
查看>>
九度oj题目1521:二叉树的镜像
查看>>
java运行时内存分类
查看>>
为什么说 Git 比 SVN 更好
查看>>
CSS的定位和浮动
查看>>
Storm启动流程分析
查看>>
C++11中lock_guard和unique_lock的区别
查看>>
解决find命令报错: paths must precede expression
查看>>
LVS 手册学习
查看>>