class String
{
public:
String(char* pStr="")
{
if(pStr==NULL)
{
_pStr=new char[0];//为了统一使用delete[]释放空间
_pStr='\0';
}
else
{
_pStr=new char[strlen(pStr)+1];//先拷贝同样大的空间
strcpy(_pStr,pStr);//拷贝内容
}
}
String(const String& s):_pStr(new char[strlen(s._pStr)+1])//申请同样大的空间
{
strcpy(_pStr,s._pStr);//拷贝内容
}
String& operator=(const String& s)//释放原空间,开辟新空间,拷贝内容
{
if(this!=&s)
{
char* temp=new char[strlen(s._pStr)+1];
strcpy(temp,s._pStr);
delete[] _pStr;
_pStr=temp;
}
return *this;
}
~String()
{
if(_pStr)
{
delete[] _pStr;
_pStr=NULL;
}
}
private:
char* _pStr;
};
c++ string类深拷贝
最新推荐文章于 2024-07-25 08:00:00 发布