0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

干货:三大实例讲解三种C++运算符重载

如意 来源:C语言基础 作者:C语言基础 2020-09-30 16:59 次阅读

本章节主要讲解是运算符重载。运算符重载是赋予运算符能操作自定义类型的功能。C++运算符重载主要分为以下三类:

类成员函数重载

友元函数重载

流运算符重载

类重载

重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。如下实现对象与对象的加法的测试代码:

干货:三大实例讲解三种C++运算符重载

对于上述重载: firstScore+secondScore 一般解析为 firstScore.operator +(secondScore) 的方式。operator+是函数名,对象调用成员函数的方式解析对象与对象的加法。所以类重载函数的参数个数是比运算符实际的操作数少1。

友元重载

友元重载,就是重载函数是友元函数,如下判断两个美女得分谁高的测试代码:

干货:三大实例讲解三种C++运算符重载

上述代码中,我们真正要比较的其实只是两个美女的各自得分,对于Liu》Di 重载函数的解析过程为 operator》(Liu,DI);operator》是函数名,故友元重载的参数个数是等于运算符的操作数的。

流重载

流运算符的重载只能采用友元的方式,并且流对象当做参数的时候必须采用引用(&)的方式,所以这里小编单独归结为一类。具体实例代码如下:

干货:三大实例讲解三种C++运算符重载

特殊重载

前置++或者-- 与后置++以及--的重载,类重载的时候并不遵循上述情况,通常我们会带一个int标识参数当做后置++或者--的重载,如下代码:

从这一点上看,其实前置之所以比后置快,一目了然,躲了一个对象的创建过程。

重载注意项

C++通常习惯单目运算符重载为类的成员函数,双目运算符重载友元函数,要注意的是有些运算符不能重载以及有些运算符只能重载类成员函数:

=,(),[],-》 只能重载为类成员函数

。,.*,::,?: 不能被重载

C++重载运算符的时候至少有一个数据是自定义类型,这个是重载的必备条件,切记。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72880
  • 源代码
    +关注

    关注

    94

    文章

    2923

    浏览量

    66047
  • 运算符
    +关注

    关注

    0

    文章

    163

    浏览量

    10943
收藏 人收藏

    评论

    相关推荐

    C++重载运算符重载函数详解

    在计算机程序设计中,运算符重载(英语:operator overloading)是多态的一种。这里,运算符(比如+,=或==)被当作多态函数,它们的行为随着其参数类型的不同而不同。运算符
    发表于 09-20 17:14 410次阅读

    C语言运算符的优先级和结合性

    ;、a=c=d;等。 3) 像 +、-、*、/ 这样的运算符,它的两边都有数据,例如 3+4、a*3 等,有两个操作数,我们称这样的运算符为双目运算符。后面还会
    发表于 07-06 06:46

    【梦翼师兄今日分享】 常见的关系运算符(移位运算符)

    Verilog HDL 中有两移位运算符:(逻辑右移)。梦翼师兄编写实例如下:[table][tr][td=568
    发表于 12-17 10:45

    【梦翼师兄今日分享】 常见的关系运算符(缩减运算符

    立即学习>>梦翼师兄FPGA培训(视频加板卡),手把手带你入门FPGA写在前面的话缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位
    发表于 12-17 10:48

    如何把C++的源程序改写成C语言

    为了满足一般的运算符使用的习惯而又不会出现错误。C中不支持运算符重载,可以定义一个函数实现该功能。这是一般类的修改。七.其他以上就是C++
    发表于 07-08 20:51

    如何把C++的源程序改写成C语言

    重载有函数重载运算符重载:1)函数的重载函数重载
    发表于 07-11 09:34

    如何把C++的源程序改写成C语言

    ;}六.重载类中重载有函数重载运算符重载:1)函数的
    发表于 06-30 10:54

    如何把C++的源程序改写成C语言

    为了满足一般的运算符使用的习惯而又不会出现错误。C中不支持运算符重载,可以定义一个函数实现该功能。这是一般类的修改。七.其他以上就是C++
    发表于 07-05 14:59

    如何把C++的源程序改写成C语言

    参数。这三种情况下都是由系统直接调用类的拷贝构造函数而不是构造函数。注意:C=D;不会调用拷贝构造函数,这种情况下使用的是重载‘=’运算符的方法。(详见
    发表于 07-07 09:31

    如何去使用运算符

    运算的定义是什么?运算符是由什么组成的?如何去使用运算符
    发表于 07-15 13:13

    C语言中运算符? :怎么使用?

    C语言中运算符? :怎么使用?
    发表于 11-02 09:23

    如何把C++的源程序改写成C语言

    重载有函数重载运算符重载:1)函数的重载函数重载
    发表于 11-17 10:16

    2.7 python运算符

    运算符以下假设变量a为10,变量b为20:[table][td][tr][td]运算符描述实例=简单的赋值运算符c = a + b 将 a
    发表于 02-21 16:43

    C++程序设计教程之运算符重载的详细资料说明

    本文档详细介绍的是C++程序设计教程之运算符重载的详细资料说明主要内容包括了:1. 什么是运算符重载,2.
    发表于 03-14 16:04 4次下载
    <b class='flag-5'>C++</b>程序设计教程之<b class='flag-5'>运算符</b><b class='flag-5'>重载</b>的详细资料说明

    什么是运算符重载

    重载运算符是具有特殊名称的函数,是通过关键字** operator **后跟运算符的符号来定义的
    的头像 发表于 01-20 15:30 1798次阅读