码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 重载运算符


    首先我们要知道为什么要有重载运算符

    1. C++中标准运算符(如+、—)的操作对象只能是基本数据类型。但对于用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,使它能够用于特定类型执行特定的操作。
    2. 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算 二元运算符中,第一个操作数为非对象时,必须使用友元函数。如输入输出运算符<<和>>符和三目运算符"?:"以外,C++中的所有运算符都可以重载。

    3. 运算符重载,本质上是函数重载,属于静态多态

     

    接着我们要说重载运算符的原则

    1. 我们只能重载已有的运算符,而无权发明新的运算符;对于一个重载的运算符,其优先级和结合律与内置类型一致才可以;不能改变运算符操作数个数;
    2. 两种重载方式:成员运算符和非成员运算符,成员运算符比非成员运算符少一个参数;下标运算符、箭头运算符必须是成员运算符;(为什么成员运算符比非成员运算符少一个参数呢,因为当重载的运算符是成员函数时,this绑定到左侧运算符对象。成员运算符函数的参数数量比运算符对象的数量少一个),这点很关键,因为this指针会绑定到左侧运算符对象,所以就会少一个参数
    3. 引入运算符重载,是为了实现类的多态性;如上文所述,运算符重载本质上是函数重载,属于静态多态。(重载和泛型编程就是实现静态多态)(虚函数是动态多态)。运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的选择原则。
    4. 下标运算符必须是成员函数,下标运算符通常以所访问元素的引用作为返回值,同时最好定义下标运算符的常量版本和非常量版本;

    5.  箭头运算符必须是类的成员,解引用通常也是类的成员;重载的箭头运算符必须返回类的指针;

    6.  二元运算符中,第一个操作数为非对象时,必须使用友元函数。如输入输出运算符<<和>>,为什么要用友元函数呢,因为为非成员函数时,需要访问类的数据成员,需要有访问权限,所以往往需要设置为友元

  • 相关阅读:
    铁道交通运输运营3D模拟仿真实操提供一个沉浸、高效且环保的情境
    理解递归与循环
    HTML西安旅游网页设计作业成品 大学生旅游风景区网页设计作业模板下载 静态HTML旅游景点网页制作下载 DW网页设计代码
    又拿三个大奖?!多力就是要让你吃的更营养更健康
    企业微信设置可信域名
    RecycleView刷新功能
    第五章. 可视化数据分析分析图表—常用图表的绘制1—折线图,柱形图
    Kubernetes 集群 troubleshooting
    【Java】使用Java实现爬虫
    【八大经典排序算法】冒泡排序
  • 原文地址:https://blog.csdn.net/weixin_60630451/article/details/126914675
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号