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; }