实现赋值运算符重载函数。确保:

  • 新的数据可准确地被复制
  • 旧的数据可准确地删除/释放
  • 可进行 A = B = C 赋值

您在真实的面试中是否遇到过这个题?

Yes
例子

假设进行 A = B 赋值。则 A 中的数据被删除,取而代之的是
B 中的数据。

假设进行 A = B = C 赋值,则 A
和 B 都复制了 C 中的数据。

挑战

充分考虑安全问题,并注意释放旧数据。

说明

本题仅仅适用于C++,由于 Java 和 Python 没有对赋值运算符的重载机制。

标签 Expand



相关题目 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;
}
};

最新文章

  1. MUI跨域请求数据的例子:
  2. c# DataTable 转为 List 类型
  3. OBD K线抓包 III
  4. 34.Android之资源文件res里drawable学习
  5. PowerDesigner的图形工具栏被我关了 怎么才能恢复?就是那个快捷工具栏 图形那个里面有什么放大镜 表 视图什么的
  6. ubuntu 执行apt-get update 提示无法获得锁
  7. Broadcast Receiver注意事项
  8. leetcode第18题--Letter Combinations of a Phone Number
  9. onfocus在火狐、ie10浏览器失效解决方法方法
  10. java基础部分细节
  11. keepalived安装与配置,组建高可用服务器
  12. 你真的了解 i++, ++i 和 i+++++i 以及 i+++i++ 吗?
  13. Content-disposition中Attachment和inline的区别
  14. Opencv4.0:遍历Mat图像空间、读取摄像头
  15. (第十二周)Bug修正报告
  16. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) B. Code obfuscation 水题
  17. 第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点
  18. CGA填充算法之种子填充算法
  19. UWP 滚动条私人定制
  20. python 使用eval() 可以将json格式的数据,转换为原始数据

热门文章

  1. Jquery_Validate 表单校验的使用
  2. SQL注入、占位符拼接符
  3. BZOJ——1787: [Ahoi2008]Meet 紧急集合
  4. 求第K大的数字
  5. MySQL5.7 的 错误堆栈缓冲
  6. Android开发工具---SQLiteManager插件
  7. cocos2d-x_AnchorPoint锚点
  8. validation-api参数校验
  9. POJ 3268 Dijkstra+priority_queue或SPFA
  10. Javascript四种调用模式中的this指向