C++编程:自定义String类的构造函数、析构函数、拷贝构造函数和赋值函数
头文件如下:
//类String
class String{
public:
String(const char *str = NULL);//普通构造函数
~String(void);
String(const String &other);
String & operator = (const String &other);
private:
char* m_data;
};
源文件如下:
//普通构造函数
String::String(const char *str)
{
if(NULL == str){
m_data = new char[1];
*m_data = '\0';
}
else{
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}
}
String::~String(void)
{
delete []m_data;
}
//拷贝构造函数
String::String(const String &other)
{
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
//赋值函数
String & String::operator = (const String &other)
{
//检查自赋值
if(this == &other){
return *this;
}
//删除原有的内存资源
delete []m_data;
//分配新的资源,并赋值内容
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
//返回本对象的引用
return *this;
}