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)相关推荐

  1. Effective C++读书笔记 摘自 pandawuwyj的专栏

    Effective C++读书笔记(0)       Start   声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节.   std::size_t numDigits(i ...

  2. more effective c++和effective c++读书笔记

    转载自http://bellgrade.blog.163.com/blog/static/83155959200863113228254/,方便日后自己查阅, More Effective C++读书 ...

  3. Effective STL 读书笔记

    Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...

  4. 大数据之路读书笔记-11事实表设计

    大数据之路读书笔记-11事实表设计 文章目录 大数据之路读书笔记-11事实表设计 11.1 事实表基础 11.1.1 事实表特性 11.1.2 事实表设计原则 11.1.3 事实表设计方法 11.2 ...

  5. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

  6. Effective Java 读书笔记(七):通用程序设计

    Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...

  7. 【Effection C++】读书笔记 条款28:避免返回handles指向对象内部成分

    [Effective C++]读书笔记 Part5 实现 条款28:避免返回handles指向对象内部成分 避免返回handles(包括references,指针,迭代器)指向对象内部.遵守这个条款可 ...

  8. Effective Java读书笔记完结啦

    Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...

  9. Effective Java 读书笔记(一)

    前言: 开个新的坑位,<effective java>的读书笔记,之后有时间会陆陆续续的更新,读这本书真的感触满多,item01和item02就已经在公司的项目代码中看到过了.今天这篇主要 ...

  10. Effective C++ 读书笔记 Item1-Item4

    目录 守则01:把C++看做一个语言的集合,而不是单一的语言 守则02:尽量使用const, enum, inline, 减少宏变量#define的使用 守则03: 尽可能使用const关键字 守则0 ...

最新文章

  1. python中的数据包处理模块scapy调研笔记
  2. oracle执行长任务,oracle 里面定时执行任务设置
  3. Linux 与win双系统时间不统一的解决方法
  4. kill掉多个进程linux中的sudo,linux下批量kill进程的方法
  5. 2015/Province_C_C++_C/6/奇妙的数字
  6. PyTorch中使用指定的GPU
  7. Cesium.js点击事件
  8. printf函数输出格式汇总
  9. poi判断合并行_POI实战2——实战代码
  10. 文本处理强调的是使用计算机对文本中,【判断题】文本处理强调的是使用计算机对文本中所含文字信息的形、音、义等进行分析和处理。文语转换(语音合成)不属于文本处理。...
  11. 架构设计说明书该怎么写?
  12. 大型互联网公司如何自建拥有独立AS号的IP网络
  13. win7如何看计算机几核,win7系统查看CPU是几核的操作方法
  14. 在架构师眼里,一份美团外卖是如何做出来的?
  15. 王传福的梦想,不止7000亿
  16. 什么是 Linux 发行版?为什么它被称为“发行版”
  17. 机器学习之模拟退火算法
  18. 使用OpenDNS解决DNS域名劫持
  19. 计算机网络开发与管理专业就业前景,计算机网络与安全管理专业就业前景和就业方向分析...
  20. 鸿蒙和ios流畅对比,鸿蒙OS对比iOS,华为再次“超越”,流畅度大幅领先苹果!...

热门文章

  1. 粒子滤波 应用_如何使用NativeScript开发粒子物联网应用
  2. javascript 堆栈_JavaScript调用堆栈-它是什么以及为什么它是必需的
  3. 利用Procdump+Mimikatz获取Windows帐户密码
  4. mysql事件探查器_【干货】Mysql的事件探查器-之Mysql-Proxy代理实战一(安装部署与实战sql拦截与性能监控)...
  5. dis的前缀单词有哪些_玩转英语词汇--词汇积累策略之前缀dis
  6. 阿里云安全肖力:安全基础建设是企业数字化转型的基石
  7. 徒手撸出一个类Flask微框架(三)根据业务进行路由分组
  8. HTML5学习之二:HTML5中的表单2
  9. Apache2.4+Tomcat7集群搭建
  10. DreamWeaver做ASP 第13页