LintCode_208 Assignment Operator Overloading (C++ Only)

来源:互联网 发布:电脑硬件温度监控软件 编辑:程序博客网 时间:2024/05/16 14:50

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.

Challenge 

Consider about the safety issue if you can and make sure you released the old data.


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 (m_pData) {            delete[] m_pData;            m_pData = NULL;        }        if (object.m_pData) {            m_pData = new char[strlen(object.m_pData)+1];            strcpy(m_pData, object.m_pData);        }        return *this;    }};





0 0
原创粉丝点击