字符串是我们在编写程序的时候经常用的到的。C++库已经帮我们实现了一个功能更加强大的字符串类string,我们要去了解它是怎么实现的。

只要是涉及到 string类的地方多少都会涉及到深浅拷贝的问题。在C++中,在用一个对象初始化另一个对象时,只复制了成员,并没有复制资源,使两个对象同时指向了同一资源的复制方式称为浅复制。
深拷贝是将指向内容复制到给当前对象新分配的缓冲区中的一种复制方式。
下面就是自己实现的深拷贝string类:
#include<iostream>
#include<string.h>
using namespace std;
class String
{
public:
String(const char* str="")
:_str(new char[strlen(str)+1])
{
strcpy(_str, str);
}
//深拷贝
String(const String& s)
:_str(new char[strlen(s._str)+1])
{
strcpy(_str, s._str);
}
String& operator=(const String& s)
{
if (this != &s)
{
delete[] _str;
_str = new char[strlen(s._str) + 1];
strcpy(_str, s._str);
}
return *this;
}
////现代写法
//String(const String& s)
// :_str(NULL)
//{
// String tmp(s._str);
// swap(tmp._str,_str);
//}
//String& operator=(const String& s)
//{
// if (this != &s)
// {
// _str = NULL;
// String tmp(s);
// swap(tmp._str, _str);
// }
// return *this;
//}
private:
char* _str;
};另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。