class MyString {
public:
MyString(const char * str = NULL);//普通构造函数
MyString(const MyString &oter);//拷贝构造函数
~MyString(void);//析构函数
MyString & operator = (const MyString &other);//赋值函数
private:
char *m_data;
};
MyString::MyString(const char * str)
{
cout << "default constructor!" << endl;
if (!str) {
m_data = new char[1];
m_data = '\0';
}
else {
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}
}
MyString ::~MyString(void)
{
cout << "default destructor!" << endl;
delete[] m_data;
}
MyString & MyString::operator=(const MyString & other)
{
cout << "fuzhi constructor!" << endl;
if (this == &other)
return *this;
delete[] m_data;
int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
return *this;
}
MyString::MyString(const MyString &other) {
cout << "copy constructor!" << endl;
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
int main()
{
MyString str("wangshan");
MyString b = "muhaha";
b = str;
}