已知String类定义如下:
class String
{
public:
String(constchar *str = NULL); // 通用构造函数
String(constString &another); // 拷贝构造函数
~ String(); // 析构函数
String &operater =(const String &rhs); // 赋值函数
private:
char *m_data; //用于保存字符串
};
下面写出其中类成员函数的实现。
String::String(const char *str)
{
if ( str == NULL) //strlen在参数为NULL时会抛异常才会有这步判断
{
m_data = new char[1] ; //分配一个char类型的内存空间
m_data[0] = '\0' ;
}
else
{
m_data = new char[strlen(str) + 1]; //开辟一段char类型的空间
strcpy(m_data,str); //赋值初始化
}
}
String::String(const String &another)
{
m_data = newchar[strlen(another.m_data) + 1];
strcpy(m_data, another.m_data);
}
String& String::operator =(const String&rhs)
{
if ( this ==&rhs)
return *this ;
delete []m_data;//删除原来的数据,新开一块内存
m_data = newchar[strlen(rhs.m_data) + 1];
strcpy(m_data,rhs.m_data);
return *this ;
}
String::~String()
{
delete []m_data;
}