面试题:String类通用构造,拷贝构造,析构,赋值函数实现

已知 String 类定义如下:

 1 class String
 2 {
 3 public:
 4     //通用构造函数
 5     String(const char* str = NULL);
 6     //拷贝构造函数
 7     String(const String& str);
 8     //析构函数
 9     ~String();
10     //赋值函数
11     String& operator=(const String& str);
12     
13 private:
14     char* m_data; //用于保存字符串
15 };

类的成员函数实现:

 1 //通用构造函数
 2 String::String(const char* str)
 3 {
 4     if(str == NULL)
 5     {
 6         m_data = new char[1];
 7         m_data[0] = '\0';
 8     }
 9     else
10     {
11         m_data = new char[strlen(str) + 1];
12         strcpy(m_data, str);
13     }
14 }
15 
16 //拷贝构造函数
17 String::String(const String& str)
18 {
19     m_data = new char[strlen(str.m_data) + 1];
20     strcpy(m_data, str.m_data);
21 }
22 
23 //析构函数
24 String::~String()
25 {
26     delete [] m_data;
27 }
28 
29 //赋值函数
30 String& String::operator=(const String& str)
31 {
32     if(this == &str)
33     {
34         return *this;
35     }
36     
37     //删除原来的数据,新开一块内存
38     delete [] m_data;
39     
40     m_data = new char[strlen(str.m_data) + 1];
41     strcpy(m_data, str.m_data);
42     return *this;
43 }

猜你喜欢

转载自www.cnblogs.com/xuewangkai/p/11166467.html