C++中string类实现,练习编写拷贝构造函数、赋值函数的编写。
#include <cstring>
class String
{
public:
String(const char* str = NULL);
String(const String& other);
~String(void);
String& operator=(const String& other);
private:
char* m_data;
};
String::~String(void)
{
delete[]m_data;
}
//普通构造函数
String::String(const char* str)
{
if (NULL == str)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new char[length];
strcpy(m_data, str);
}
}
//拷贝构造函数
String::String(const String& other)
{
int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
}
//赋值函数
String& String::operator=(const String& other)
{
if (this == &other)
{
return *this;
}
else
{
//先释放原有资源
delete[]m_data;
m_data = NULL;
//分配新的内存资源,并复制内容
int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
return *this;
}
}