namespace MyStringNew{
class String{
public:
//构造,先申请内存,再将内容拷贝到申请的内存上面
String(char* str="")
:_str(new char[strlen(str)+1])
{
strcpy(_str, str);
}
~String()
{
delete _str;
_str = nullptr;
}
String(String& s)
:_str(nullptr)
{
String tmp(s._str);
swap(_str, tmp._str);
//实质上,将指针存储的地址进行互换(即指针的指向关系发生交换)
//tmp出作用域,析构,释放的内存为原来(this)的_str.
}
String& operator=(String& s)
{
swap(_str, s._str);
return *this;
}
private:
char* _str;
};
}
string类成员函数的简单实现
最新推荐文章于 2021-08-09 10:48:37 发布