实现赋值运算符重载函数,确保:
A = B = C
赋值如果进行 A = B
赋值,则
A 中的数据被删除,取而代之的是 B 中的数据。
如果进行 A = B = C
赋值,则
A 和 B 都复制了 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) { delete this->m_pData; if(object.m_pData != nullptr) { this->m_pData = new char[strlen(object.m_pData)+1]; strcpy(this->m_pData,object.m_pData); } } return *this; } };
原文地址:http://blog.csdn.net/wangyuquanliuli/article/details/45895287