Assignment Operator Overloading (C++ Only)(赋值运算符重载)

问题

Implement an assignment operator overloading method.

Make sure that:

The new data can be copied correctly
The old data can be deleted / free correctly.
We can assign like A = B = C
Have you met this question in a real interview? Yes
Clarification
This problem is for C++ only as Java and Python don't have overloading for assignment operator.

Example
If we assign like A = B, the data in A should be deleted, and A can have a copy of data from B.
If we assign like A = B = C, both A and B should have a copy of data from C.

代码

class Solution {
public:
    char *m_pData;
    Solution() {
        this->m_pData = NULL;
    }
    Solution(char *pData) {
        this->m_pData = pData;
    }

    // Implement an assignment operator
    Solution operator=(const Solution &object) {
        // write your code here
        if(this==&object){
            return *this;
        }
        if(object.m_pData==NULL){
            this->m_pData=NULL;
        }else{
            char *temp=m_pData;
            m_pData = new char[strlen(object.m_pData)+1];
            strcpy(m_pData, object.m_pData);
            if (temp)
                delete[] temp;
        }
        return *this;
    }
};

你可能感兴趣的:(Assignment Operator Overloading (C++ Only)(赋值运算符重载))