class String { public: String(const char *str = NULL); String(const String &str); ~String(); String& operator =(const String &str); String operator +(const String &str); void ShowString(); private: char *m_string; }; String::String(const char *str) { if (str == NULL) { m_string = new char[1]; m_string ='/n'; } else { int len = strlen(str); m_string = new char[len+1]; strcpy(m_string,str); } } String::String(const String &str) { int len = strlen(str.m_string); m_string = new char[len+1]; strcpy(m_string,str.m_string); } String::~String() { delete [] m_string; } String& String::operator =(const String &str) //注意与“+”比较 { if (this == &str) { return *this; // } delete [] m_string; int len = strlen(str.m_string); m_string = new char[len+1]; strcpy(m_string,str.m_string); return *this; } String String::operator +(const String &str) //注意与“=”比较,双目运算符 { String newstring; if (!str.m_string) { newstring = *this; } else if (!m_string) { newstring = str; } else { int len = strlen(m_string)+strlen(str.m_string); newstring.m_string = new char[len+1]; strcpy(newstring.m_string,m_string); strcat(newstring.m_string,str.m_string); } return newstring; } void String::ShowString() { cout<<m_string<<endl; }