编写类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(const char *str) { if(NULL == str) { m_data = new char[1]; *m_data = '/0'; } else { int length = strlen(str); m_data = new char[length+1]; strcpy(m_data, str); } } //String的析构函数 String::~String(void) { delete [] m_data; //由于m_data是内部数据类型,也可以写成 delete m_data; } //String的拷贝构造函数 String::String(const String &other) { //允许操作other的私有成员m_data int length = strlen(other.m_data); m_data = new char[length+1]; strcpy(m_data, other.m_data); } //String的赋值函数 String& String::operate =(const String &other) { //1.检查自赋值 if(this == &other) { return *this; } //2.释放原有的内存资源 delete [] m_data; //3.分配新的内存资源,并复制内容 int length = strlen(other.m_data); m_data = new char[length+1]; strcpy(m_data, other.m_data); //4.返回本对象的引用 return *this; }

你可能感兴趣的:(C/C++)