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

Posted 李憨憨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++从入门到入土第十篇:string模拟实现相关的知识,希望对你有一定的参考价值。

string模拟实现



类的成员

传统写法

1.构造函数


正确写法:

这才是一个空的string类对象,字符串的内容为空,创建的对象才有一个有效的地址;
但是一般情况下我们都会写一个带缺省值的构造函数;

2.析构函数

3.拷贝构造


这就是浅拷贝所造成的的问题,浅拷贝只拷贝了指针的地址,而没有拷贝指针所指向的内容


深拷贝不仅拷贝了指针,而且拷贝了指针指向的内容;
而且深拷贝开辟了一块新的空间将原来的内容拷贝了一份,这样的话如果我去释放空间,只会释放我自己开辟的这一块空间而不会去释放原有的那一块空间,所以各自释放都只会释放一次,就不会有多次释放的问题;

4.赋值运算符


现代写法

1.构造函数

2.析构函数

3.拷贝构造

与传统写法不同的地方就在于拷贝构造函数


这里的初始值一定要赋为空值,否则交换之后的临时对象就会成为随机值,在释放空间的时候就会出现问题;

4.赋值运算符

以上是关于C++从入门到入土第十篇:string模拟实现的主要内容,如果未能解决你的问题,请参考以下文章

C++从入门到入土第十三篇:vector的模拟实现

C++从入门到入土第十五篇:list的模拟实现

C++从入门到入土第十六篇:再谈数据结构--栈和队列

C++从入门到入土第十六篇:再谈数据结构--栈和队列

C++从青铜到王者第十篇:STL之vector类的模拟实现

C++从入门到入土第二十篇:关联式容器-map和set