实现赋值运算符重载函数。确保:
- 新的数据可准确地被复制
- 旧的数据可准确地删除/释放
- 可进行
A = B = C
赋值
Yes
例子
假设进行 A = B
赋值。则 A 中的数据被删除,取而代之的是
B 中的数据。
假设进行 A = B = C
赋值,则 A
和 B 都复制了 C 中的数据。
挑战
充分考虑安全问题,并注意释放旧数据。
说明
标签 Expand 本题仅仅适用于C++
,由于 Java 和 Python 没有对赋值运算符的重载机制。
相关题目 Expand
分析:主要要做到内容的拷贝,而不止止是指针的拷贝,坑点:1自己给自己赋值2A=B,B里面的指针是空
代码:
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&&*m_pData) delete m_pData; if(object.m_pData==nullptr) { m_pData = nullptr; return *this; } m_pData = new char[strlen(object.m_pData)+1]; strcpy(object.m_pData,m_pData); m_pData[strlen(object.m_pData)]='\0'; return *this; } };