#208 Assignment Operator Overloading (C++ Only)

来源:互联网 发布:混迹知乎的浩天哥 编辑:程序博客网 时间:2024/04/30 05:55

题目描述:

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.

题目思路:

这题就是考c++中的overload。题目要求先delete A,再copy B中的data。那么首先检查A的data是不是已经等于B了,如果是,直接return;如果不是,先delete A的data,然后new一个新的char*,把B的data copy到A中去。

Mycode(AC = 5ms):

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 A == B, just return A        if (this->m_pData == object.m_pData){            return *this;        }                // delete A        if (this->m_pData) {            this->m_pData = NULL;            delete[] this->m_pData;        }                // if B has data, then new a char[], and copy the data        // from B to A        if (object.m_pData){            this->m_pData = new char[strlen(object.m_pData) + 1];            strcpy(this->m_pData, object.m_pData);        }                return *this;    }};


0 0
原创粉丝点击