Evelyn
1809335179@qq.com
构造函数、拷贝构造函数、赋值构造函数、析构函数定义
类string为例:
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(const char*str)
{
if (str == NULL) { // 此处的判断
m_data = new char[1];
*m_data = '\0';
}
else {
int len = strlen(str);
m_data = new char[len + 1];
strcpy(m_data,str);
}
}
string::string(const string &other)
{
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
}
string& string:: operator=(const string &other) //
{
if (this==&other) //此处写法应注意 &
return *this;
if (m_data != NULL)
delete[] m_data;
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
return *this; //此处写法应注意 返回本引用,不要忘记
}
string::~string()
{
if (m_data != NULL)
delete[] m_data;
}
string a;
string b=a; //调用的是拷贝构造函数
string a;
string b;
b=a;//调用赋值构造函数