#include <string.h> //***题目部分************************************ class String { public: String(const char *str = NULL); String(const String &another); ~ String(); String & operator =(const String &); private: char *m_data; // 用于保存字符串 }; //************************************************ String::String(const char *str) { if(str == NULL) { m_data = new char[1];// 直接返回了个NULL,低级错误。 m_data[0] = '\0'; } else m_data = new char[strlen(str) + 1]; strcpy(m_data, str); } String::String(const String &another) { if(&another == this) // 写成了another == *this return; else { m_data = new char[strlen(another.m_data) + 1]; strcpy(m_data, another.m_data); } } String::~String() { if(m_data != NULL) delete[] m_data; } String& String::operator =(const String &rhs)// 格式错误,写成了String::String& operator=...... { if(&rhs == this) return *this; else { delete[] m_data; // 忘记了清除原来的数据 m_data = new char[strlen(rhs.m_data) + 1]; strcpy(m_data, rhs.m_data); } return *this; }
编程练习- 尝试写出String类的成员函数实现
最新推荐文章于 2020-12-25 22:34:00 发布