类String的构造函数、析构函数、拷贝构造函数和赋值函数
程序员文章站
2022-07-15 17:00:59
...
class String
{
public:
String();
String(const char *str);
String(const String &s);
~String();
String& operator=(const String &str);
private:
char *data;
};
//默认构造函数
String::String()
{
data=new char[1];
*data='\0';
}
//带参数构造函数
String::String(const char *str)
{
if (str==NULL)
{
data=new char[1];
*data='\0';
}
else
{
int len=strlen(str);
data=new char[len+1];
strcpy(data,str);
}
}
//复制构造函数
String::String(const String &str)
{
int len=strlen(str.data);
data=new char[len+1];
strcpy(data,str.data);
}
//析构函数
String::~String()
{
delete[] data;
data = NULL;
}
//赋值操作符
String& String::operator=(const String &str)
{
if (this == &str)
return *this;
int len=strlen(str.data);
delete[] data;
data = NULL;
data=new char[len+1];
strcpy(data,str.data);
return *this;
}
转载于:https://my.oschina.net/gaosheng/blog/294965