劍指offer:面試題1:賦值運算符函數
阿新 • • 發佈:2019-03-08
void 面試題1 賦值運算 入參 vat strcpy 參數 urn char*
題目
如下為類型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; }
劍指offer:面試題1:賦值運算符函數