「生活可以更简单, 欢迎来到我的开源世界」
面试题1:赋值运算符
2020-07-09
」 「

剑指offer面试题1,重载赋值运算符。

题目:如下为类型CMyString的声明,为该类型添加赋值运算符函数。

class CMyString{
public:
CMyString(char *pData = nullptr);
CMyString(const CMyString &str);
~CMyString();
private:
char* m_pData;
}
CMyString& CMyString::operator=(const CMyString &str){
if(this != &str){
CMyString strTemp(str);

char *pTemp = strTemp.m_pData;
strTemp.m_pData = m_pData;
m_pData = pTemp;
}
return *this;
}

先创建一个临时实例,交换m_pData,函数执行完后临时实例会被析构,把strTemp.m_pData所指向的内存释放掉。

<⇧>