剑指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;   
}
posted @ 2019-03-08 09:17  一只猫的爱园  阅读(104)  评论(0编辑  收藏  举报