美文网首页
LintCode 208. Assignment Operato

LintCode 208. Assignment Operato

作者: Andiedie | 来源:发表于2017-10-25 02:18 被阅读0次

    原题

    LintCode 208. Assignment Operator Overloading (C++ Only)

    Description

    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

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

    相关文章

      网友评论

          本文标题:LintCode 208. Assignment Operato

          本文链接:https://www.haomeiwen.com/subject/lwufpxtx.html