小朋友学C++(44):运算符重载

  • 时间:2019-01-14 22:23 作者:海天一树X 来源:海天一树X 阅读:579
  • 扫一扫,手机访问
摘要:咱们定义一个结构体Point,用来表示平面上的点:struct Point{ int x; int y;};咱们经常用到的运算符“+”、“-”、“*”、“/”,只能用于int, float, double, char类型的变量之间。两个Point的变量,并不能使用这些运算符来进行运算。在

咱们定义一个结构体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
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】Fortigate飞塔防火墙如何开启DNS转发/DNS代理(2025-10-14 23:58)
【系统环境|】有了它,再也不用担心电脑弹窗广告和病毒啦!(2025-10-14 23:57)
【系统环境|】如何关闭恼人的电脑弹窗广告?2招搞定(2025-10-14 23:55)
【系统环境|】实用软件推荐:电脑广告弹窗多?用他,都给你屏蔽掉!(2025-10-14 23:55)
【系统环境|】Nginx篇01——基本安装配置和静态页面设置(2025-10-14 23:54)
【系统环境|】Linux端口开放,查看,删除,防火墙(2025-10-14 23:53)
【系统环境|】安全HTTP头部配置: 基于CSP与HSTS的Web安全策略(2025-10-14 23:52)
【系统环境|】老K:做私域过1000万的赛道全部都聚焦在女性身上!(2025-10-14 23:51)
【系统环境|】JavaScript跨域问题: 如何解决跨域访问和资源共享的安全策略(2025-10-14 23:51)
【系统环境|】家庭七级财务防火墙(2025-10-14 23:50)
手机二维码手机访问领取大礼包
返回顶部