您的位置:首页 > 其它

编写类String的构造/析构函数,赋值操作符

2014-05-18 21:39 225 查看
class String
{
public:
String(const char * str = NULL);	//普通构造函数
String(const String &other);		//复制构造函数
String & operator= (const String &other);	//赋值操作符
~String();							//析构函数
private:
char *m_data;
};

String::String(const char *str)
{
if (str == NULL)
{
m_data = new char[1];
m_data[1] = '\0';
}
else
{
int lenght = strlen(str);
m_data = new char[lenght + 1];
strcpy(m_data, str);
}
}

String::String(const String &other)
{
int lenght = strlen(other.m_data);
m_data = new char[lenght + 1];
strcpy(m_data, other.m_data);
}

String & String::operator= (const String &other)
{
if(&other == this)	//证同测试
return *this;
delete [] m_data;
int lenght = strlen(other.m_data);
m_data = new char[lenght + 1];
strcpy(m_data, other.m_data);
return *this;		//第一次写的时候忘记返回*this
}

String & String::operator= (const String &other)
{
String temp(other);
//	delete [] m_data;
swap(m_data, other.m_data);
return *this;	//又忘记返回*this
}

String::~String()
{
delete [] m_data;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐