当前位置: 首页 > news >正文

c++-运算符函数与运算符重载

目录

    • 概述
    • 例子
    • 注意问题

概述

运算符重载是函数一个特殊情况,重载的运算符视为特殊的函数,称为运算符函数。
编译系统能依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一运算符的不同含义。
运算符重载针对原有运算符进行,不能通过重载创造出新的运算符。
除了.、.*、->*、::、?:外,其他 运算符都可以重载。
不能为重载的运算符函数设置默认值,在调用时不能省略实参。
除了new和delete这两个较为特殊的运算符外,任何运算符作为成员函数重载时不得重载为静态成员函数。

=、[]、()、->以及所有类型转换运算符只可以做为成员函数重载,不能针对 枚举类型操作数进行重载
运算符函数的函数名由运算符前加关键字operator构成,在声明运算符或调用运算符时都可以用这个名字。

例子

比如
某类的成员函数重载了+二元运算符

a.operator + (b);
a+(b);

非成员函数重载了+

operator + (a,b);
a+b;

一元运算符情况

a.operator - ();
-c;

非成员函数

operator - (c);
-c;

成员函数重载,第一操作数是对象本身,有this指针,所以不出现在形参表中。
而非成员函数,没有this指针,所以对象本身也要出现在形参表中。

注意问题

1、重载的运算符应保持其原有的基本语义
2、重载的运算符应尽可能保持其原有的特性
是否要求第一操作数为有左值操作数。
是否修改第一操作数
操作结果是否为有左值数据
保证不改变第二操作数
3、运算符之间的关系密切,有某种逻辑上的联系,因此,若需要重载其中的某一个,就意味着同组的其他运算符也需要重载。
4、使用引用参数还是非引用参数
5、作为成员函数重载还是作为非成员函数重载

http://www.lryc.cn/news/5365.html

相关文章:

  • 【MySQL Shell】8.9.3 修复 InnoDB ClusterSet 中的成员服务器和集群
  • 宝塔搭建实战php开源likeadmin通用管理pc端nuxt3源码(三)
  • 【C++】---Stack和Queue的用法及其模拟实现
  • Python GUI编程
  • 2023年浙江水利水电施工安全员精选真题题库及答案
  • Solon2 开发之插件,三、插件体外扩展机制(E-Spi)
  • 数据结构与算法(Java版) | 数据结构与算法的关系
  • 华科万维C++章节练习3_7
  • CHAPTER 5 Jenkins SonarQube
  • [AAAI 2023] Oral : Zero-shot 零样本/ Few-shot 少样本收录论文集合
  • 驱动开发 2.13
  • 【数据库】sql函数和多表关联查询
  • 6-周赛332总结
  • 嵌入式Qt 开发一个音乐播放器
  • 2023秋招万得集团AI算法岗面经分享
  • RoI Transformer论文翻译详解
  • Prometheus 自动发现监控AWS EC2实例
  • 从recat源码角度看setState流程
  • 【Java|golang】1234. 替换子串得到平衡字符串---双指针
  • 自监督表征学习方法——BYOL(Bootstrap Your Own Latent)
  • 均衡负载集群(LBC)-1
  • WebSocket
  • GA-PEG-GA,Glutaric Acid-PEG-Glutaric Acid,戊二酸-聚乙二醇-戊二酸供应
  • 使用sqlmap + burpsuite sql工具注入拿flag
  • 替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案
  • 乐鑫特权隔离机制的 OTA 固件升级
  • C++数据结构 —— 二叉搜索树
  • Maven面试题及答案
  • WebRTC系列-Qos系列之接收放RTX处理
  • 国内能否炒伦敦金,2023国际十大正规伦敦金交易平台排名