Effective C++学习笔记——构造/析构/拷贝运算
- 1: class A
- 2: {
- 3: ...
- 4: private:
- 5: int *p;
- 6: }
- 7: //1 各种不安全
- 8: A& A::operator=(const A& rhs)
- 9: {
- 10: delete p;
- 11: p = new A(*rhs.p);
- 12: return *this;
- 13: }
- 14:
- 15: //2 语句顺序的改变,带来“自我复制安全”(虽然也许不够高效)与“异常安全”。
- 16: A& A::operator=(const A& rhs)
- 17: {
- 18: pOrig = p;
- 19: p = new A(*rhs.p);
- 20: delete pOrig;
- 21: return *this;
- 22: }
- 23:
- 24: //3 copy-and-swap技术
- 25: void A::swap(A& rhs)
- 26: {
- 27: ...//交换*this与rhs
- 28: }
- 29: A& A::operator=(const A& rhs)
- 30: {
- 31: A temp(rhs);
- 32: swap(rhs);
- 33: return *this;
- 34: }
- 35:
- 36: //4 巧妙伶俐的利用值传递在制造临时副本,即使有可能更为高效(在“函数参数构造”)却牺牲了清晰性。
- 37: A& A::operator=(const A rhs)
- 38: {
- 39: swap(rhs);
- 40: return *this;
- 41: }
Effective C++学习笔记——构造/析构/拷贝运算的更多相关文章
- C++学习笔记 构造&析构 友元 new&delete
构造&析构函数 构造函数 定义:与类同名,可以有参可以无参,主要功能用于在类的对象创建时定义初始化的状态,无返回值,也不能用void修饰,构造函数不能被直接调用,必须通过new运算符在创建对象 ...
- 《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
- 《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
- Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value
Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...
- Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据
Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...
- Effective STL 学习笔记: Item 22 ~ 24
Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...
- Effective STL 学习笔记:19 ~ 20
Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective C++学习笔记(Part Two:Item 5-12)
近期最终把effectvie C++细致的阅读了一边,非常惊叹C++的威力与魅力.近期会把近期的读书心得与读书笔记记于此.必备查找使用,假设总结有什么不当之处,欢迎批评指正: 如今仅仅列出框架. ...
- Effective STL 学习笔记 39 ~ 41
Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
随机推荐
- iphone--有关日历中NSDateFormatter中英文
在使用日历使用中,获取星期的时候 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFo ...
- iOS程序启动原理(简单)
1.执行main -> 执行UIApplicationMain UIApplicationMain底层实现 1.创建UIApplication对象 2.创建UIApplication代理对象 3 ...
- SVN多次重复验证
在MyEclipse中使用svn checkout时,总是弹出密码验证信息,原因是在首次保存密码时与服务器的密码不一致,而每次都是读取的本地密码导致重复验证,这里我们可以删除本地 的密码信息,问题解除 ...
- eclipse - tomcat 远程调试
步骤:前提是tomcat上应用是eclipse打包部署上去的,代码一致. 1,在机器A上部署应用remote-debug之前,需要为机器A上的tomcat配置调试端口.在${tomcat}/bin下加 ...
- Android BaseAdapter
ListView显示与缓存机制: 只会加载当前屏幕所要显示的数据.显示完成就会被回收到Recycler中. BaseAdapter 基本结构: public int g ...
- inline-block代替浮动布局float:left列表布局最佳方案
基于各位前辈的辛勤劳动,下面得出使用inline-block替换float:left;的最佳方案. html代码 <div class="list"> <ul&g ...
- Android 常用代码片小结
1. dp px 相互转换---------------public class DensityUtil { /** * 根据手机的分辨率从 dip 的单位 转成为 px(像素) */ public ...
- win7_32位安装MySQL_5.6以及密码修改方法
1.下载mysql: http://www.xiazaiba.com/html/361.html 2.安装 方便起见,全部默认下一步吧,原理一个样,最后安装到: 3.配置环境变量 我这里添加的是 C ...
- C语言入门(3)——对Hello World程序的解释
上篇我们写了一个最简单的程序.这个简单的程序包含了很多重要的内容.本篇我们通过这个最简单的Hello World程序逐一讲解C语言程序的一些特点. 打开Visual Studio 2013 通过菜单- ...
- Netfilter-packet-flow.svg
调试网络的方法:(Debugging the kernel using Ftrace) $ watch -n1 -d sudo cat /proc/net/snmp$ watch -n1 -d su ...