条款11:在operator=中处理自我赋值
来源:互联网 发布:mac如何卸载app 编辑:程序博客网 时间:2024/05/18 03:34
别在停止使用资源前释放它
class Bitmap{};class Widget{public: Widget() { pb = NULL; } Bitmap *pb ; Widget& operator=(const Widget&);};Widget& Widget::operator=(const Widget& rhs){ delete pb; pb = new Bitmap(*rhs.pb); return *this;}Widget a, b;a = b;/*上述a=b进行赋值是有问题的,因为operator=函数内*this和rhs有可能是同一个,所以在delete pb时有可能把当前对象的bitmap和rhs的bitmap都删除了,这时候pb就指向已被删除的对象*/
Widget& Widget::operator=(const Widget& rhs){ Bitmap* pOrig = pb; pb = new Bitmap(*rhs.pb); delete pOrig; return *this;}/*上述operator=函数中先用pOrig记住原先的pb,然后用pb指向*pb的一个副本,最后删除pOrig(就是原来的pb)*/
阅读全文
0 0
- 条款11: 在operator= 中处理"自我赋值"
- 条款11:在operator= 中处理“自我赋值”
- 条款11: 在operator= 中处理"自我赋值"
- 条款11:在operator = 中处理"自我赋值"
- 条款11:在operator=中处理“自我赋值”
- 条款11:在operator=中处理”自我赋值“
- 总结条款:11在operator=中处理“自我赋值”
- 条款11 在operator=中处理“自我赋值”
- 条款11:在operator=中处理“自我赋值”
- 条款11 在operator=中处理“自我赋值“
- 条款11 在operator=中处理“自我赋值”
- 条款11:在operator=中处理“自我赋值
- 条款11:在operator=中处理自我赋值
- 条款11:在operator=中处理“自我赋值”
- 条款11:在operator=中处理“自我赋值”(Handle assignment to self in operator=.)
- Effective C++ 条款11 在赋值操作符operator=中处理“自我赋值”
- 【Effective c++】条款11:在operator=中处理“自我赋值”
- 《Effective C++》学习笔记条款11 在operator =中处理“自我赋值”
- JSON语法及JSON定义规范化
- Java作业-圆柱体积
- 习题6-4 骑士的移动(Knight Moves, UVa 439)
- 对线性回归,logistic回归和一般回归的认识
- LeetCode 0013
- 条款11:在operator=中处理自我赋值
- linux性能监控 -CPU、Memory、IO、Network等指标的讲解
- java se基础知识
- http请求和响应详解
- Android自学笔记之UI组件:TextView组件
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 A题 Visiting Peking University
- Kth Largest Element in an Array
- Gym
- css3 media媒体查询器用法总结