lintcode-赋值运算符重载
2015-10-24 23:03
204 查看
实现赋值运算符重载函数,确保:
新的数据可准确地被复制
旧的数据可准确地删除/释放
可进行
样例
如果进行
如果进行
挑战
充分考虑安全问题,并注意释放旧数据。
说明
本题只适用于
新的数据可准确地被复制
旧的数据可准确地删除/释放
可进行
A = B = C赋值
样例
如果进行
A = B赋值,则 A 中的数据被删除,取而代之的是 B 中的数据。
如果进行
A = B = C赋值,则 A 和 B 都复制了 C 中的数据。
挑战
充分考虑安全问题,并注意释放旧数据。
说明
本题只适用于
C++,因为 Java 和 Python 没有对赋值运算符的重载机制。
class Solution { public: char *m_pData; Solution() { this->m_pData = NULL; } Solution(const Solution &A){ if(!A.m_pData){ m_pData=nullptr; }else{ m_pData = new char[strlen(A.m_pData)+1]; strcpy(m_pData,A.m_pData); } } Solution(char *pData) { this->m_pData = pData; } ~Solution(){ if(m_pData) delete m_pData; } Solution operator=(const Solution &object) { Solution dummy(object); swap(dummy.m_pData,m_pData); return *this; } };
相关文章推荐
- python 用requests模块自动登录
- Adobe Acrobat Reader DC v15.7
- 04-树6 Complete Binary Search Tree 完全二叉搜索树
- PHP 中和 HTTP 相关的函数及使用
- 通过LAMP组合,基于heartbeat v2 crm实现HA
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- Ubuntu 13.04系统更新后状态栏消失解决
- 使用好压(HaoZip)软件打包EverEdit制作安装程序
- Collaborative Filtering
- 2015年的系统架构师大会随感
- ubuntu中遇到usr bin x not found问题
- 1420 (A^B)%C
- Stackoverflow上人气最旺的10个Java问题
- 利用雪碧图及css自制的动态变色导航栏
- The Dole Queue 约瑟夫环 模拟
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- AngularJs轻松入门
- AngularJs轻松入门
- AngularJs轻松入门
- 【ShaderToy】边栏的小雨伞