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++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73644
  • 源代码
    +关注

    关注

    96

    文章

    2945

    浏览量

    66747
  • 运算符
    +关注

    关注

    0

    文章

    172

    浏览量

    11083
收藏 人收藏

    评论

    相关推荐

    C语言基础知识(4)--运算符

    C语言中,运算符包括有算术运算符、关系运算符、逻辑运算符和位运算
    的头像 发表于 06-15 09:38 3717次阅读

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

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

    C语言运算符的使用方法

    详细介绍了C语言表达式、算术运算符、赋值运算符、关系运算符、条件结构、逻辑运算符、位运算符的语法
    发表于 11-02 11:30 1617次阅读
    <b class='flag-5'>C</b>语言<b class='flag-5'>运算符</b>的使用方法

    如何去使用运算符

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

    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>的详细资料说明

    缩减运算符的工程实例讲解

      缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其
    的头像 发表于 11-19 07:06 4202次阅读
    缩减<b class='flag-5'>运算符</b>的工程<b class='flag-5'>实例</b><b class='flag-5'>讲解</b>

    移位运算符的应用实例讲解

    移位运算符在程序设计中,是位操作运算符的一。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:(带符号
    的头像 发表于 11-19 07:04 3516次阅读
    移位<b class='flag-5'>运算符</b>的应用<b class='flag-5'>实例</b><b class='flag-5'>讲解</b>

    C运算符的优先级和结合性详细解决

    运算符是一告诉编译器执行特定的数学或逻辑操作的符号。 C语言内置了丰富的运算符,大体可分为10类:算术运算符、关系
    的头像 发表于 02-22 17:27 3242次阅读

    python运算符是什么

    a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到 负数或是一个数减
    的头像 发表于 02-21 16:44 2387次阅读

    C语言总结_语句、运算符

    当前文章复盘C语言的: 位运算运算符、基本运算符、数据类型、变量、for语句、while语句、goto语句、switch语句、运算符优先级强
    的头像 发表于 08-14 09:39 1010次阅读

    什么是运算符重载

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

    条件(元)运算符

    RTL建模中广泛使用的运算符是条件运算符,也称为运算符,该运算符用于在两个表达式之间进行选择——表5-2列出了用于表示条件
    的头像 发表于 02-09 15:42 1365次阅读
    条件(<b class='flag-5'>三</b>元)<b class='flag-5'>运算符</b>

    c语言运算符及例题

    C语言中逻辑运算符包含逻辑与&&、逻辑或||、逻辑非!三种。其中逻辑与&&是双目运算符,即需要运算符两边都要有表达式,且两边表达式都为真,此
    发表于 02-16 16:14 0次下载

    C语言的运算符

    C语言中,我们常常会用到表达式,在使用表达式的过程中便会使用到运算符C语言中,不同的运算符拥有不同的优先级和结合性。在执行运算的过程中,
    的头像 发表于 02-21 15:12 1196次阅读
    <b class='flag-5'>C</b>语言的<b class='flag-5'>运算符</b>

    c语言从右到左的运算符有哪些

    以下是一些主要的从右到左运算C语言运算符: 函数调用运算符 ( () ):当您调用一个函数时,参数列表是从右到左进行求值的。 后置递增运算符
    的头像 发表于 08-20 11:39 949次阅读