历时两个多月的时间,终于把effective c++又复习了一遍,比较慢,看的是英文版,之前看的时候做过一些笔记,但不够详细,这次笔者是从头到尾的翻译了一遍,加了一些标题,先记录到word里面,然后发布到博客园上。这么做是为了方便查阅,复习C++,同时练习英文,希望这些帖子也能够对大家有所帮助。

有人回复说有些过时了,的确,但大部分还都是effective的,可以看scott meyers关于这个问题的的回复:

is effective c++ still effective?

精读一本经典书,每次都有新的发现。

笔者水平有限,肯定有很多错误或者说不明白的地方,希望大家能够指正。

将书的章节以思维导图的形式展示出来能够一目了然,也可以将这些章节联系起来,增加理解,现在有很多思维导图软件,但博客园只能插入图片,不能把链接也放入其中,所以只能用博客园的图表功能画一个“思维导表”出来了。

Effective C++ 让你自己适应C++ Item 1 将c++视为一个语言联邦
Item 2 尽量使用const,枚举(enums),内联(inlines),不要使用宏定义(define) 
Item 3 在任何可能的时候使用 const 
Item 4 确保对象被使用前进行初始化
构造函数,析构函数和赋值操作符 Item 5 了解c++默认生成并调用的函数
Item 6 如果你不想使用编译器自动生成的函数,你需要明确拒绝 
Item 7 在多态基类中将析构函数声明为虚析构函数
Item 8 不要让异常(exceptions)离开析构函数
Item 9 绝不要在构造函数或者析构函数中调用虚函数
Item 10 让赋值运算符返回指向*this的引用 
Item 11 在operator=中处理自我赋值
Item 12 拷贝对象的所有部分
设计和声明 Item 13 用对象来管理资源
Item 14 对资源管理类的拷贝行为要谨慎
Item 15 在资源管理类中提供对原生(raw)资源的访问
Item 16 成对使用new和delete时要用相同的形式
Item 17 使用单独语句将new出来的对象放入智能指针 
Item 18 使接口容易被正确使用,不容易被误用
Item 19 像设计类型(type)一样设计类
Item 20 优先使用按const-引用传递(by-reference-to-const)而不是按值传递(by value)
Item 21 当你必须返回一个对象的时候,不要尝试返回引用
Item 22 将数据成员声明成private
Item 23 宁可使用非成员非友元函数函数也不使用成员函数 
Item 24 如果函数的所有参数都需要类型转换,将其声明成非成员函数
Item 25 实现一个不抛出异常的swap 
实现 Item 26 尽量推迟变量的定义
Item 27 尽量少使用转型(casting)
Item 28 不要返回指向对象内部数据(internals)的句柄(handles)
Item 29 为异常安全的代码而努力 
Item 30 理解内联的里里外外 (大师入场啦)
Item 31 把文件之间的编译依赖降到最低
继承和面向对象设计 Item 32 确保public继承建立“is-a”模型
Item 33 避免隐藏继承而来的名字 
Item 34 区分接口继承和实现继承 
Item 35 考虑虚函数的替代者
Item 36 永远不要重新定义继承而来的非虚函数 
Item 37 永远不要重新定义继承而来的函数默认参数值 
Item 38 通过组合(composition)为 “has-a”或者“is-implemented-in-terms-of”建模 
Item 39 明智而谨慎的使用private继承 
Item 40 明智而谨慎的使用多继承
模板和泛型编程 Item 41 理解隐式接口和编译期多态
Item 42 理解typename的两种涵义
Item 43 了解如何访问模板化基类中的名字
Item 44 将与模板参数无关的代码抽离出来
Item 45 使用成员函数模板来接受“所有兼容类型” 
Item 46 如果想进行类型转换,在模板内部定义非成员函数 
Item 47 使用traits class表示类型信息
Item 48 了解模板元编程
Item 49 理解new-handler的行为
定制new和delete Item 50 了解何时替换new和delete 是有意义的 
Item 51 实现new和delete的时候要遵守约定
Item 52 如果你实现了placement new,你也要实现placement delete
杂项 Item 53 关注编译器发出的警告
Item 54 让你自己熟悉包括TR1在内的标准库
Item 55 让你自己熟悉Boost

effective c++ 思维导图的更多相关文章

  1. 精心整理「服务器Linux C/C++」 成长路程(附思维导图)

    前言 我不是名校毕业,更没有大厂的背景,我只是一个毕业不到 2 年的普普通通的程序员,在摸爬滚打的工作这段时间里,深知了有一个「完整的知识体系」是非常重要的.当事人非常后悔没有在大学期间知道这个道理- ...

  2. Photoshop、Illustrator思维导图笔记

    半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.

  3. "Becoming Functional" 阅读笔记+思维导图

    <Becoming Functional>是O'Reilly公司今年(2014)7月发布的一本薄薄的小册子,151页,介绍了函数式编程的基本概念.全书使用代码范例都是基于JVM的编程语言, ...

  4. IT技术思维导图

    在网上看到有个人总结的java技术的东东,觉得很好,就保存下来了,码农还真是累啊,只有不断的学习才能有所提高,才能拿更多的RMB啊. java技术思维导图 服务端思维导图 前端思维导图

  5. XMind共享未保存的思维导图的教程

    我们在XMind 6对导图进行局域网共享时,一般都是对XMind文件先进行保存再共享,那样是忘记保存呢,该如何共享.局域网共享功能是XMind 6特有的功能之一,自是较为完善,性能强大的功能,当然有办 ...

  6. 思维导图FreeMind安装问题及简单使用

    思维导图软件使用的坎坷之路 一直想将思维导图加入到工作环境当中 最开始使用的是 MindManager(http://www.mindmanager.cc/) ,而且感觉利用它制作出来的导图外观也比较 ...

  7. 【干货】jsMind思维导图整合Easyui的右键菜单

    原材料: 1.web版本的JavaScript思维导图(BSD开源协议)[戳这里去官网]. 2.easyui最新版[戳这里去官网]. 这里是原本的jsMind: 在线测试地址 :http://hizz ...

  8. Unity_UGUI知识点思维导图

    转自 http://blog.csdn.net/qq_34134078/article/details/51772568 个人总结的UGUI学习知识要点思维导图,四张部分图及最后一张整体图 1.UI基 ...

  9. 思维导图FreeMind

    什么是MindMap? MindMap(被译成思维导图或心智图)是一种思维工具,由英国的记忆之父托尼-博赞发明. MindMap是一种新的思维模式,它将左脑的逻辑.顺序.条例.文字.数字,以及右脑的图 ...

随机推荐

  1. Android布局管理详解(1)—— LinearLayout 线性布局

    Android的布局方式共有6种,分别是LinearLayout(线性布局).TableLayout(表格布局).FrameLayout(帧布局).RelativeLayout(相对布局).GridL ...

  2. 谈谈数据库中MyISAM与InnoDB区别 针对业务类型选择合适的表

    MyISAM:这个是默认类型,它是基于传统的ISAM类型, ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法. ...

  3. mui和zepto的tap事件

    zepto.js和mui一起使用的时候,tap事件会发生两次,这时只要不引用zepto.js的touch.js就可以了,只用mui的tap事件转自[B5教程网]:http://www.bcty365. ...

  4. 对VC++6.0爱得深沉(三)静态库的制作与使用

    [创建] 1)建立新工程(win32静态库) (2)加入.h文件于.cpp文件如图. 3)编译-构建,生成.lib文件 [使用] 1)新建普通控制台程序 2)打开项目文件夹与刚才生成的库文件夹 3)方 ...

  5. SQL Server中的Merge关键字 更新表数据

    简介 Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根 ...

  6. TreeSet集合如何保证元素唯一

    TreeSet: 1.特点 TreeSet是用来排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列 2.使用方式 a.自然顺序(Comparable) TreeSet类的add()方法中会 ...

  7. (转)python中的*args和**kw到底是个啥。看下面的例子就会懂了

    先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '----------- ...

  8. cassandra高级操作之分页的java实现(有项目具体需求)

    接着上篇博客,我们来谈谈java操作cassandra分页,需要注意的是这个分页与我们平时所做的页面分页是不同的,具体有啥不同,大家耐着性子往下看. 上篇博客讲到了cassandra的分页,相信大家会 ...

  9. 网站防止SQL注入方法

    方法:所有获取GET.POST变量都先进行过滤: 字符串-- htmlspecialchars(addslashes($string))  addslashes() 函数返回在预定义字符之前添加反斜杠 ...

  10. 1.XML规范

    1.1 XML命名规范 XML 元素必须遵循以下命名规则: • 名称可以含字母.数字以及其他的字符 • 名称不能以数字或者标点符号开始 • 名称不能以字符“xml”(或者XML.Xml)开始 • 名称 ...