public String
{
public:
String(const char* str=NULL); // 构造函数
String(const String &other); // 拷贝构造函数(自己重写是要使用深拷贝,即重新开辟一个内存空间)
~ String(void); // 析构函数,不能有形参,可以显示的说明为void类型。
String &operator=(const char *str); // 重载等号运算符,使用指针传参
String &operator=(const String &other); // 重载等号运算符,使用引用传参
ShowString();
private:
char *m_data;
};
String::~String()
{
delete []m_data; //析构函数,因为开辟的内存空间是数组,即连续多个,所以使用【】;
}
String::String(const char *str)
{
if(str == NULL){
m_data = new char[1];
m_data ='\0';
}else{
int length =strlen(str);
m_data = new char[length+1];
strcpy(m_data,str);
}
}
String::String(const String &other)
{
int length =strlen(other.m_data);
m_data =new char[length+1];
strcpy(m_data,other.m_data);
}
String& String::operator=(const char *str)
{
if(str == NULL){
m_data = new char[1];
m_data ='\0';
}else{
int length =strlen(str);
m_data = new char[length+1];
strcpy(m_data,str);
}
return *this;
}
String& String::operator=(const String &other)
{
if(this != &other){
delete []m_data;
int length = strlen(other.m_data);
m_data =new char[length] ;
strcpy(m_data,other.m_data);
}
return *this;
}