effective C++ 读书笔记(11-28)
1:
RAII 资源获得时机便是初始化时机
典型应用: 智能指针!
2: 为什么 auto_ptr 指针复制之后 原指针就会变成NULL : 多分指针指向它 会被析构多次 delete 函数会多次调用
3:
我要再次留心 stl容器的数据结构 与 特性
4:
对于heap-based 资源 用shared-ptr 比较好
但是对于 栈上资源 还是用 自己的资源管理类比较好
5:
shared_ptr 对象在引用计数 为零的时候 会delete raw ptr
但这不是必需的
你可以用
例如:
shared_ptr<Mutex> mutexPtr(rawPtr,unlock); // unlock 是个函数
这种方法自己定义引用计数为零时的动作
6:
deep copying:
复制时 指针+指针指向的那块内存区域 都复制
7:
delete->dangle->NULL
8:
new :
内存分配(operator new) 如果分配成功 则调用若干个构造函数
delete:
若干个析构函数被调用 内存释放(operator delete)
9:
shared_ptr 的初始化 应该以独立语句 进行
processWidget(shared_ptr<Widget>(new Widget),process());
应为你无法确定 new Widget 与 process() 的执行顺序 万一 process() 的执行抛出异常 则new 出来的Widget 没有没析构
10:
用 wrapper 类型 去包裹 传入 构造函数的 东西
11:
shared_ptr 定制 deletor 防止 跨DLL的delete错误
它会使用初始化时所在的DLL中的deletor 删除对象
12:
pass by value 不仅浪费资源 多次构造析构
还有可能造成 slicing
最好用 pass by reference-to-const 方式
13:
references 往往 用指针 实现出来
因此 内置类型 往往 pass by value 更高效
14:
任何函数返回一个指向 local 对象的reference 都会大悲剧
15:
所有local static 对象 都需要考虑其 多线程的安全性
16:
static_cast 不能将 const 转化为non-const 指针!
只有const_cast 可以办到
17:
尽可能利用 virtual func() 多态的方式 避免 dynamic_cast
并且万不得已 要使用 dynamic_cast 则要先判断是否转型成功
base * b = new base();
if(drived *d = dynamic_cast<drived *>(b)) // 擦 好像往往都是转型失败!
d->v();
转载于:https://www.cnblogs.com/wangshuai901/archive/2011/09/08/2171176.html
effective C++ 读书笔记(11-28)相关推荐
- Effective C++读书笔记 摘自 pandawuwyj的专栏
Effective C++读书笔记(0) Start 声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节. std::size_t numDigits(i ...
- more effective c++和effective c++读书笔记
转载自http://bellgrade.blog.163.com/blog/static/83155959200863113228254/,方便日后自己查阅, More Effective C++读书 ...
- Effective STL 读书笔记
Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...
- 大数据之路读书笔记-11事实表设计
大数据之路读书笔记-11事实表设计 文章目录 大数据之路读书笔记-11事实表设计 11.1 事实表基础 11.1.1 事实表特性 11.1.2 事实表设计原则 11.1.3 事实表设计方法 11.2 ...
- Effective Java读书笔记(二)
Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...
- Effective Java 读书笔记(七):通用程序设计
Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...
- 【Effection C++】读书笔记 条款28:避免返回handles指向对象内部成分
[Effective C++]读书笔记 Part5 实现 条款28:避免返回handles指向对象内部成分 避免返回handles(包括references,指针,迭代器)指向对象内部.遵守这个条款可 ...
- Effective Java读书笔记完结啦
Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...
- Effective Java 读书笔记(一)
前言: 开个新的坑位,<effective java>的读书笔记,之后有时间会陆陆续续的更新,读这本书真的感触满多,item01和item02就已经在公司的项目代码中看到过了.今天这篇主要 ...
- Effective C++ 读书笔记 Item1-Item4
目录 守则01:把C++看做一个语言的集合,而不是单一的语言 守则02:尽量使用const, enum, inline, 减少宏变量#define的使用 守则03: 尽可能使用const关键字 守则0 ...
最新文章
- python中的数据包处理模块scapy调研笔记
- oracle执行长任务,oracle 里面定时执行任务设置
- Linux 与win双系统时间不统一的解决方法
- kill掉多个进程linux中的sudo,linux下批量kill进程的方法
- 2015/Province_C_C++_C/6/奇妙的数字
- PyTorch中使用指定的GPU
- Cesium.js点击事件
- printf函数输出格式汇总
- poi判断合并行_POI实战2——实战代码
- 文本处理强调的是使用计算机对文本中,【判断题】文本处理强调的是使用计算机对文本中所含文字信息的形、音、义等进行分析和处理。文语转换(语音合成)不属于文本处理。...
- 架构设计说明书该怎么写?
- 大型互联网公司如何自建拥有独立AS号的IP网络
- win7如何看计算机几核,win7系统查看CPU是几核的操作方法
- 在架构师眼里,一份美团外卖是如何做出来的?
- 王传福的梦想,不止7000亿
- 什么是 Linux 发行版?为什么它被称为“发行版”
- 机器学习之模拟退火算法
- 使用OpenDNS解决DNS域名劫持
- 计算机网络开发与管理专业就业前景,计算机网络与安全管理专业就业前景和就业方向分析...
- 鸿蒙和ios流畅对比,鸿蒙OS对比iOS,华为再次“超越”,流畅度大幅领先苹果!...
热门文章
- 粒子滤波 应用_如何使用NativeScript开发粒子物联网应用
- javascript 堆栈_JavaScript调用堆栈-它是什么以及为什么它是必需的
- 利用Procdump+Mimikatz获取Windows帐户密码
- mysql事件探查器_【干货】Mysql的事件探查器-之Mysql-Proxy代理实战一(安装部署与实战sql拦截与性能监控)...
- dis的前缀单词有哪些_玩转英语词汇--词汇积累策略之前缀dis
- 阿里云安全肖力:安全基础建设是企业数字化转型的基石
- 徒手撸出一个类Flask微框架(三)根据业务进行路由分组
- HTML5学习之二:HTML5中的表单2
- Apache2.4+Tomcat7集群搭建
- DreamWeaver做ASP 第13页