剑指offer:面试题1:赋值运算符函数
题目
如下为类型CMyString的声明,请为该类型添加赋值运算符函数
class CMyString
{
public:
CMyString(char* pData = nullptr);
CMyString(const CMyString& str);
~CMyString(void);
private:
char* m_pData;
};
思路
传入参数要用常量引用
返回值的类型要声明为该类型的引用
解法
CMyString& CMyString::operator=(const CMyStrin &str)
{
//先判断传入参数是否为当前实例,是则直接返回当前实例
if (this == &str)
return *this;
//释放当前实例的内存
delete []m_pData;
m_pData = nullptr;
//申请新内存并将传入参数赋值到当前实例
m_pData = new char[strlen(str.m_pData) + 1];
strcpy(m_pData, str.m_pData);
return *this;
}