世界是平的
ouyangzp
全部博文(11)
2011年(1)
2010年(1)
2009年(9)
分类:
2009-10-20 21:25:12
参考高质量C++/C编程指南
已知类String 的原型为
class String { public: String(const char *str=NULL);//普通构造函数 ~String(); //析取函数 String(const String &other);//拷贝构造函数 String &operator=(const String &other);//赋值函数 private: char * m_data;//用于保存字符串 }; // String的普通构造函数String::String(const char *str){ if(str==NULL) { 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(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::operator=(const String &other){ // (1) 检查自赋值 if(this == &other) //注意不要错写成为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; }
上一篇:美好回忆(二)
下一篇:成员函数的重载、覆盖与隐藏
登录 注册