首页 > 代码库 > 【c++常见问题】-写一个string实现
【c++常见问题】-写一个string实现
一个string类的实现必须很快速写出来。
1 class String 2 { 3 public: 4 String(const char *str = NULL);// 普通构造函数 5 String(const String &other); //拷贝构造函数 6 ~ String(void); //析构函数 7 String & operator =(const String &other);//赋值函数 8 private: 9 char *m_data;// 用于保存字符串10 };11 12 //普通构造函数13 String::String(const char *str)14 {15 if(str==NULL)16 {17 m_data = http://www.mamicode.com/new char[1]; // 对空字符串自动申请存放结束标志‘\0‘的//加分点:对m_data加NULL 判断18 *m_data = http://www.mamicode.com/‘\0‘;19 }else{20 int length = strlen(str);21 m_data = http://www.mamicode.com/new char[length+1]; // 若能加 NULL 判断则更好22 strcpy(m_data, str);23 }24 }25 26 // String的析构函数27 String::~String(void)28 {29 delete[] m_data; // 或delete m_data;30 }31 32 //拷贝构造函数33 String::String(const String &other) // 输入参数为const型34 {35 int length = strlen(other.m_data);36 m_data = http://www.mamicode.com/new char[length+1]; //对m_data加NULL 判断37 strcpy(m_data, other.m_data);38 }39 40 String & String::operator =(const String &other) // 输入参数为const41 型42 {43 if(this != &other) //检查自赋值44 {45 String strTemp(str);46 char* pTemp = strTemp.m_pData;47 strTemp.m_pData =http://www.mamicode.com/ m_pData;48 m_pData =http://www.mamicode.com/ pTemp;49 }50 return *this; //返回本对象的引用51 }
1 //赋值函数, 欠佳做法 2 String & String::operator =(const String &other) // 输入参数为const 3 型 4 { 5 if(this == &other) //检查自赋值 6 return *this; 7 delete[] m_data; //释放原有的内存资源 8 int length = strlen( other.m_data ); 9 m_data = http://www.mamicode.com/new char[length+1]; //对m_data加NULL 判断10 strcpy( m_data, other.m_data );11 return *this; //返回本对象的引用12 }
【c++常见问题】-写一个string实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。