class String
{
public:
String();
String(const char *str);
~String();
String& operator=(const String& other);
String(const String& obj);
private:
char* m_data; // 用于保存字符串
};
String::String()
{
//实现无参构造函数
m_data = new char[1];
m_data[0] = '\0';
}
String::String(const char *str)
{
//带参构造函数
if (str == nullptr)
{
m_data = new char[1];
m_data[0] = '\0';
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}
}
String::String(const String& obj)
{
//拷贝构造函数----申请空间再拷贝
m_data = new char[strlen(obj.m_data) + 1];
strcpy(m_data, obj.m_data);
}
String& String::operator=(const String& other)
{
//赋值语句
if (&other == this)
return *this;
delete[] m_data;
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
String::~String()
{
delete[] m_data;
}