运算符重载

运算符重载:1.不能改变运算符的优先级
2.满足和系统提供的运算符相同的逻辑
3.不能创造新的运算符

浅拷贝:将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用
在这里插入图片描述
用string生成一个对象str1,直接将对象赋给str2,共用一块内存。(原对象和新生成的对象共用一块实体)
影响:1.两个对象的_str指向同一片空间,那么析构的时候这片空间必然会析构两次。
2.一个的改变会影响另一个。
解决方案:深拷贝(每次都要重新开辟空间效率低)、使用引用计数

深拷贝:创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”
在这里插入图片描述
str2重新开辟内存来保存str1赋过来的值
影响:深拷贝虽然每个指针会指向不同的空间,没有一个空间多次释放的问题,但可能保存的数据都是一样的,这样会导致空间的浪费。

写时拷贝:数据修改前(浅拷贝);数据修改时(深拷贝);在数据没修改之前共用一块内存,数据需要修改时重新开辟内存进行拷贝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值