C++运算符重载详解

目录

觉得有用的话点个赞吧!

什么是运算符重载?怎么来的?怎么用?

书写格式:

注意事项:


什么是运算符重载?怎么来的?怎么用?

考虑一个问题:

对于内置类型编译器可以自己比较

但是自定义类型呢?

编译器没法比,也不知道怎么比较,把握不住

所以,需要我们自己写一个函数进行比较

那么写函数,就涉及一个命名的问题:

函数命名

什么样子的函数名才叫做规范?

这个,不好说,毕竟没有硬性规定

所以,需要靠程序员自己的素养

然而,依旧会有很多不同,影响可读性

所以,祖师爷想到了这个问题

于是就对这个问题进行了处理

于是整了一个运算符重载的东西

书写格式:

函数名为operator后面跟运算符号:==、>、<、-

加法、乘法对于自定义类型的运算没有意义

之后,在使用的地方直接使用该符号即可,即所谓运算符重载

注意事项:

同时,自定义运算符重载还有一个问题:

就是类的成员变量访问的问题

一般来说类的成员变量都是private(私有)的

所以,无法访问

那么,怎么办呢?

1、可以使用在类内部写函数返回对应的值,例如get、set等函数,java超级喜欢这样做

2、你不是在类外面访问不了吗?那我直接把运算符重载写在类里面,写成成员函数

但是对于第二种直接写在类里面的,会有一个问题

那就是参数的问题

例如,一般来说,==操作符需要有两个操作数

所以我们需要传两个参数

但是,在类内部的成员函数都会有一个默认的this参数:const classname* const this

这个this参数是该类自己的对象

所以,要删掉一个参数,因为隐含了一个this参数

觉得有用的话点个赞吧!

相关推荐
John_ToDebug4 小时前
浏览器扩展延迟加载优化实战:如何让浏览器启动速度提升50%
c++·chrome·windows
是娇娇公主~4 小时前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
SuperEugene4 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
xuxie995 小时前
N11 ARM-irq
java·开发语言
wefly20176 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
luanma1509806 小时前
PHP vs C++:编程语言终极对决
开发语言·c++·php
寂静or沉默6 小时前
2026最新Java岗位从P5-P7的成长面试进阶资源分享!
java·开发语言·面试
csdn_aspnet7 小时前
C/C++ 两个凸多边形之间的切线(Tangents between two Convex Polygons)
c语言·c++·算法
kyriewen117 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript
娇娇yyyyyy8 小时前
QT编程(18): Qt QItemSelectionModel介绍
开发语言·qt