// 编写一个名为 String 的类,表示字符串。重载赋值运算符 = ,使其能够执行字符串的赋值操作。 #include #include #include using namespace std; class String { private: char *str; public: String(const char *s = NULL) // 构造函数: 默认参数为NULL,表示构造一个空字符串 { if (s == NULL) str = NULL; else { str = new char[strlen(s) + 1]; strcpy(str, s); } } String(const String &s) { if (s.str == NULL) str = NULL; else { str = new char[strlen(s.str) + 1]; strcpy(str, s.str); } } ~String() { if (str != NULL) // 如果str不为空,删除str delete[] str; } public: String &operator=(const String &s) { if (str == s.str) return *this; if (str != NULL) // 如果str不为空,则先删除str delete[] str; // 删除的目的是为了防止内存泄漏 if (s.str == NULL) // 如果s.str为空,则str也为空 str = NULL; else str = new char[strlen(s.str) + 1]; // +1 是为了存放'\0' strcpy(str, s.str); return *this; // 返回当前对象的引用 } void print() { if (str != NULL) cout << str << endl; else cout << "NULL" << endl; } }; int main() { String s1("hello"); s1.print(); String *s2 = new String("world"); s2->print(); s1 = "xi'an"; s2 = &s1; s2->print(); return 0; }