【C++从入门到入土】第十篇:string模拟实现

本文详细介绍了如何使用传统和现代方法来模拟实现String类。重点对比了两种方法中构造函数、析构函数、拷贝构造函数及赋值运算符的不同之处,并深入解释了深拷贝与浅拷贝的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string模拟实现



类的成员

在这里插入图片描述

传统写法

1.构造函数

在这里插入图片描述
正确写法:
在这里插入图片描述
这才是一个空的string类对象,字符串的内容为空,创建的对象才有一个有效的地址;
但是一般情况下我们都会写一个带缺省值的构造函数;
在这里插入图片描述

2.析构函数

在这里插入图片描述

3.拷贝构造

在这里插入图片描述
这就是浅拷贝所造成的的问题,浅拷贝只拷贝了指针的地址,而没有拷贝指针所指向的内容
在这里插入图片描述
在这里插入图片描述
深拷贝不仅拷贝了指针,而且拷贝了指针指向的内容;
而且深拷贝开辟了一块新的空间将原来的内容拷贝了一份,这样的话如果我去释放空间,只会释放我自己开辟的这一块空间而不会去释放原有的那一块空间,所以各自释放都只会释放一次,就不会有多次释放的问题;

4.赋值运算符

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

现代写法

1.构造函数

在这里插入图片描述

2.析构函数

在这里插入图片描述

3.拷贝构造

与传统写法不同的地方就在于拷贝构造函数
在这里插入图片描述
在这里插入图片描述
这里的初始值一定要赋为空值,否则交换之后的临时对象就会成为随机值,在释放空间的时候就会出现问题;

4.赋值运算符

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李憨憨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值