1. 程式人生 > >劍指offer:面試題1:賦值運算符函數

劍指offer:面試題1:賦值運算符函數

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:賦值運算符函數