类于对象——运算符的重载

发布时间:2024年01月22日

运算符重载:让自定义类型也可以正常使用各种运算符

重载函数格式:返回值类型+operator+运算符(第二个参数)

规则: 不能通过连接其他符号来创建新的操作符:比如operator@ 重载操作符必须有一个类类型参数
用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不 能改变其含义
作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐 藏的this
.* :: sizeof ?: .注意以上5个运算符不能重载。

    • 的一些操作符的重载

在这里插入图片描述

插入流 <<
提取流 >>

自定义类型也是不可以直接使用这两个操作符的
在这里插入图片描述
因为这两个操作符也是只可以直接给内置类型使用,但是我们想要自定义类型也可以使用,是否可以也利用操作符的重载来实现呢?

首先我们要知道。cout是编译器自带类ostream的对象;cin是编译器自带类istream的对象;

在这里插入图片描述
那么如果想要实现的话,我们就要把隐藏指针变得可控,那么就只有不要用隐藏指针了(不要重载函数了),直接把函数写在类的外面
在这里插入图片描述
但是这样又出现了一个问题,类中的成员变量是私有的,在类外面是无法访问的
这里我们在类中添加友元函数就可以解决。
在这里插入图片描述
cin插入流的实现也是类似的
这里我们也可以看出以前用的输入输出,printf,和scanf是不可以重载实现自定义类型的使用的

文章来源:https://blog.csdn.net/qq2127189274/article/details/135739819
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。