拷贝赋值函数
C++默认的拷贝构造函数和赋值构造函数都是浅拷贝,所以当遇到类成员含有指针变量时,就得自己实现深拷贝!
指针拷贝的四大步骤:
- 检查是否自我赋值;
- 删掉原数据;
- 分配新的数据长度;
- 赋值;
inline
String& String::operator=(const String& str)
{
//检测是否是自我赋值,
if (this == &str)
return *this;
//删掉原数据;
delete[] m_data;
//分配新的数据长度;
m_data = new char[ strlen(str.m_data) + 1 ];
// 赋值
strcpy(m_data, str.m_data);
return *this;
}