首页 > 代码库 > 【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 }
View Code
 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 }
View Code

 

【c++常见问题】-写一个string实现