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

c++类【开端】

运算符重载

        方式:operator运算符(参数列表){}。

        运算符就是:+-*/[]等。

        运算符重载,和定义一个方法效果是一样的,只是,重载运算符让类的+-*/等操作看起来和普通数字的+-*/一样。仅是看起来一样。我们重载运算符,就是在做这个表面上看起来一样的背后的运行规则。就是说,为了看起来一样,重载运算符在负重前行。

重载的限制

        不是所有的运算符都可以重载。

        重载运算的操作数至少要有一个自定义的类型。

        运算规则要和之前一样,

        还有一些不能重载的运算符。

        还有一些只能重载为成员函数的运算符:=()[]->这4个,只能通过成员运行符重载。

        延伸:左侧操作数必须是调用对象。

友元

        为何需要友元?因为重载运算符左侧操作数必须是调用对象,导致有些运算重载运实现不了。比如A*3重载可以,但3*A就没法操作了。也不能用非成员函数,因为非成员函数不能访问类的内部数据。这不就尴尬了么。所以用友元来解决。友元可以访问对象的内部数据。

        友元分三种:友元函数,友元类,友元成员函数。

        友元函数:不是类的成员函数,只是把原型写在类的声明里,并以friend开始。告诉类这是个友元函数,不需要在类里实现,友元函数的定义就和普通函数一样,只是在类里用friend声明一下。

重载的运算符一般应设计成友元函数,这样,可以访问类的私有数据。

类型转换

        自动转换与强制转换:

        自动转换也可以称作 是隐式转换。转换就涉及转换函数,函数就是要定义的,但是,有些构造 函数可以转为转换函数。比如:只有一个参数的构造函数能够转换成转换函数。

        这种默认的转换在实践中发现有时不好用,所以,有些人在定义构造函数的时候,在前面加一个explicit关键字,这就是在告诉类,这个构造函数不能进行自动转换,必须要显示的调用才能转换。构造函数,只适用于将其它类型转换为自己类的这种转换,但是,如果反过来,要将类转换为其它类型。侧需要转换函数了。

        转换函数是用户自定义的强制类型转换。原型写法:operator 类型名();没有返回类型一说。

转换函数必须是类的方法,没返回值,也没有参数。但是定义里,必须返回转换后的值。

总结

        访问类的成员,唯一方法就是通过使用类的方法,但是友元避开了这个限制,解决了一些不能用的场景。

        运算符重载,运算符函数可以是成员函数,也可以是友元函数,但是一般建议定义成友元函数,可以避开第一个操作数必须是类对象的限制。

        转换函数,就是将类转换为其它类型,一般要自定义。还有就是将其它类型转换为类,这个一般可以通过只有一个参数的构造函数自动转换,通过要构造函数前加explicit可以限制自动转换,只能显性调用转换,减少出错。

http://www.xdnf.cn/news/284617.html

相关文章:

  • C 语言比较运算符:程序如何做出“判断”?
  • MySQL 复合查询
  • 详解 FFMPEG 交叉编译 `FLAGS` 和 `INCLUDES` 的作用
  • git项目迁移,包括所有的提交记录和分支 gitlab迁移到gitblit
  • OpenCV第6课 图像处理之几何变换(仿射)
  • 开元类双端互动组件部署实战全流程教程(第2部分:控制端协议拆解与机器人逻辑调试)
  • 解读《国家数据标准体系建设指南》:数据治理视角
  • 多语言笔记系列:Polyglot Notebooks 中运行 BenchmarkDotnet 基准测试
  • 【HarmonyOS 5】鸿蒙应用数据安全详解
  • 【2025最新】AI绘画终极提示词库|MidjourneyStable Diffusion通用公式大全
  • 如何将腾讯云的测试集成到自己的SpringBoot中
  • stm32之TIM定时中断详解
  • 力扣面试150题-- 翻转二叉树
  • Kubernetes控制平面组件:Controller Manager详解
  • 调试——GDB、日志
  • 使用直觉理解不等式
  • 架构思维:构建高并发读服务_热点数据查询的架构设计与性能调优
  • JVM 内存结构全解析
  • AI预测的艺术品走势靠谱吗?
  • 矩阵快速幂 快速求解递推公式
  • 数据集-目标检测系列- 蜥蜴 检测数据集 lizard >> DataBall
  • kotlin中枚举带参数和不带参数的区别
  • Debezium MySqlValueConverters详解
  • 抖音生活服务“五一”数据:小城游火爆,“食住”消费增速显著
  • 【Game】Powerful——Transformation Card(10)
  • linux系统基本操作命令
  • 探索神经符号系统:医疗AI的范式化进程分析
  • # 从零构建一个简单的卷积神经网络:手写数字识别
  • HTML 元素
  • adb无线调试步骤