面试题62:String类的具体实现
问:已知String类的定义如下。
class String { public: String(const char*str=NULL);//通用构造函数 String(const String&another);//复制构造函数 ~String();//析构函数 String&operater=(const String&rhs);//赋值函数 private: char*m_data;//用于保存字符串 };
尝试写出类的成员函数实现。
答:编写的程序如下所示。
01 String:String(const char*str) 02 { 03 if(str==NULL)//strlen在参数为NULL时会抛异常,才会有这步判断 04 { 05 m_data=new char[1]; 06 m_data[0]='/0'; 07 } 08 else 09 { 10 m_data=new char[strlen(str)+1]; 11 strcpy(m_data,str); 12 } 13 14 } 15 16 String:String(const String&another) 17 { 18 m_data=new char[strlen(another. m_data)+1]; 19 strcpy(m_data,other. m_data); 20 } 21 22 String&String:operator=(const String&rhs) 23 { 24 if(this==&rhs) 25 return*this; 26 delete[]m_data;//删除原来的数据,新开一块内存 27 m_data=new char[strlen(rhs. m_data)+1]; 28 strcpy(m_data,rhs. m_data); 29 return*this; 30 } 31 32 String:~String() 33 { 34 delete[]m_data; 35 }