5 C++运算符重载

1. 运算符重载

C++的运算符只能用于基本的数据类型,运算符重载目的是对抽象数据类型也可以使用基本数据类型。

返回值类型 operator 运算符 (形参表)
{
	...
}

1.1 运算符重载为普通函数

在这里插入图片描述
在这里插入图片描述

1.2 运算符重载为成员函数

成员函数需要作用在对象上,同样实现两个数相加,只需传递一个参数就可以,传递运算符后面那一个。
在这里插入图片描述
在这里插入图片描述

2. 赋值运算符=的重载

1)可以直接使用赋值运算符=完成两个对象的赋值。
2)但是当赋值运算符两边的类型不匹配,比如int类型赋值给Complex类型,在这种情况下,就需要重载赋值运算符=
3)赋值运算符=只能重载为成员函数,不能重载为普通函数。
看下面这样的例子
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 浅复制与深复制

浅复制:逐个字节的复制工作

在这里插入图片描述
在这里插入图片描述
深复制:将指针变量指向的内容复制给另一个对象中指针成员对象指向的内容
在这里插入图片描述
为了实现上面的效果,需要设计一个新的operator=,具体实现程序如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.4 返回值的讨论

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. 动态可变长度数组

在这里插入图片描述

在这里插入图片描述

4. 流插入运算符的重载

1)cout是在头文件iostream中定义的ostream类的对象。
2)左运算符<<能用在cout上是因为,在iostream里面对<<`进行了重载。
具体怎么实现呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值