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;
}编写类String的构造/析构函数,赋值操作符
最新推荐文章于 2025-03-25 19:31:48 发布
本文详细介绍了使用C++实现自定义String类的过程,包括普通构造函数、复制构造函数、赋值操作符重载及析构函数的具体实现细节。特别关注了深拷贝的实现以避免内存泄漏问题。
627

被折叠的 条评论
为什么被折叠?



