class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString();
private:
char* m_pData;
};
//为了可以连续赋值,返回值类型应为对象的引用
//参数应为const类型,避免实例被修改;且为引用类型
CMyString& CMyString :: operator = (const CMyString &str)
{
if(this == str)//如果将实例赋值给自己,直接返回
return *this;
delete []m_pData;//先释放实例自身已有的内存空间
m_pData = NULL;//并指向空
m_pData = new char[strlen(str.pData) + 1];//再根据传入实例分配内存,避免出现内存泄露
stpcpy(m_pData, str.m_pData);//将字符串进行复制
return *this;//返回自身的引用
}
《剑指offer》——重载赋值运算符函数
最新推荐文章于 2018-05-24 10:36:29 发布