已知类String 的原型为 class String { ? public: ? String(const char *str = NULL); // 普通构造函数 ? String(const String &other); // 拷贝构造函数 ? ~ String(void); // 析构函数 ? String & operate =(const String &other); // 赋值函数 ? private: ? char *m_data; // 用于保存字符串 }; 请编写String 的上述 个函数 标准答案 // String 的析构函数 String::~String(void) // 分 { ? delete [] m_data; ? // 由于m_data 是内部数据类型也可以写成 delete m_data; } // String 的普通构造函数 String::String(const char *str) // 分 { ? if(str==NULL) ? { ? m_data = new char[]; // 若能加 NULL 判断则更好 ? *m_data = \; ? } ? else ? { ? int length = strlen(str); ? m_data = new char[length+]; // 若能加 NULL 判断则更好 ? strcpy(m_data str); } } // 拷贝构造函数 String::String(const String &other) // 分 { ? int length = strlen(otherm_data); ? m_data = new char[length+]; // 若能加 NULL 判断则更好 ? strcpy(m_data otherm_data); } // 赋值函数 String & String::operate =(const String &other) // 分 { ? // () 检查自赋值 // 分 ? if(this == &other) ? return *this; ? // () 释放原有的内存资源 // 分 ? delete [] m_data; ? // ()分配新的内存资源并复制内容 // 分 ? int length = strlen(otherm_data); ? m_data = new char[length+]; // 若能加 NULL 判断则更好 ? strcpy(m_data otherm_data); ? // ()返回本对象的引用 // 分 ? return *this; } |