class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operator =(const String &other); // 赋值函数
private:
char *m_String; //私有成员,保存字符串
};
String::~String(void)
{
cout<<"Destructing"<<endl;
delete [] m_String;
}
String::String(const char *str)
{
cout<<"Construcing"<<ENDL;
if(str==NULL)
{
m_String = new char[1];
*m_String = '\0';
}
else {
int length = strlen(str);
m_String = new char[length+1];
strcpy(m_String, str);
}
}
String::String(const String &other)
{
cout<<"Constructing Copy"<<endl;
int length = strlen(other.m_String);
m_String = new char[length+1];
strcpy(m_String, other.m_String);
}
String & String::operator =(const String &other)
{
cout<<"Operate = Function"<<endl;
if(this == &other)
return *this;
//释放原有的内存资源
delete [] m_String;
//分配新的内存资源,并复制内容
int length = strlen(other.m_String);
m_String = new char[length+1];
strcpy(m_String, other.m_String);
return *this;
}
void main()
{
String a("auss");
String b("MTK");
String c(a);
c=b;
}