九月的这三周把《Effective C++》重读了一遍,尽量以自己的理解,用最简单的(其实太深入也不会写)的语言把书里面的重点都写了下来。

由于之前找实习占用了大量的时间,写的博客都比较水,这个分类是正式开始比较认真地在写了,今后还会继续记录一些知识点。

这十几篇文章都采用代码+文字 的方式来叙述,作者在书里列举了很多实际上我们开发时候不经意就能踩到的坑,并且倡导我们写出高质量、高效率的代码。

我把这本书分为三个大部分来阅读:

  • 基本语法的坑点。 前面讲的是C++基本语法上可能会遇到的一些坑点,特别是在拷贝构造 这一块上的问题。理解了这些之后再去选择高效率的写法。
  • 代码的设计和实现。 文中大量用到了Smart Pointer的RAII思想,可以有效管理内存泄漏,这作为写代码的基本工具。然后考虑我们的继承体系,阐述了几种继承各自的优缺点。
  • 泛型编程。 书中也有很多的模板的例子,都是一些比较简单的做法,其中阐述了全特化和偏特化,都是作为泛型编程和高效编程的基本。还有我觉得很酷的模板元编程,熟练使用模板元编程就没那么简单了。

另外我并没有全部记录所有的条款:

  • 条款31:将文件间的编译依存关系降至最低。此条款我尚不能把其中的重点抽取出来,目前我对编译原理这些事还有欠学习。
  • 条款47:请使用class traits表现类型信息。 在STL中的traits我也尚未仔细学习,不明白其中的道理。在今后的STL源码阅读中会再阐述。

还有在文中的一些设计模式相关今后也会添加专门的栏目去写,所以在这里就写的相对比较简单一些。

我觉得我记录的关于《Effective C++》的重点都比较容易看懂,每个条款下都有代码的展示,C++入门者(像我一样)都可以轻松看懂,只需要静下心来。

希望大家多多指教。

《Effective C++》结语的更多相关文章

  1. 解析《Effective Java》之多个构造器、Javabeans模式和Builder模式

    最近看<Effective Java>这本被很多同行称为神作的书,但是这本书很多地方缺少了举例不好懂,下面是关于我对书上知识的理解. 一.<Effective Java>中文版 ...

  2. Effective前端2:优化html标签

    div { float: left; } .keyboard > div + div { margin-left: 8px; } --> div{display:table-cell;ve ...

  3. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  4. 《Effective java》-----读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...

  5. 《Effective Java》学习笔记——积累和激励

    从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段 ...

  6. Effective前端5:减少前端代码耦合

    什么是代码耦合?代码耦合的表现是改了一点毛发而牵动了全身,或者是想要改点东西,需要在一堆代码里面找半天.由于前端需要组织js/css/html,耦合的问题可能会更加明显,下面按照耦合的情况分别说明: ...

  7. Effective前端4:尽可能地使用伪元素

    伪元素是一个好东西,但是很多人都没怎么用,因为他们觉得伪元素太诡异了.其实使用伪元素有很多好处,最大的好处是它可以简化页面的html标签,同时用起来也很方便,善于使用伪元素可以让你的页面更加地简洁优雅 ...

  8. Effective前端3:用CSS画一个三角形

    p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...

  9. Effective前端1:能使用html/css解决的问题就不要使用JS

    div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...

随机推荐

  1. Python中的 _init__和 _new__的区别

    使用python 的面向对象写过程序之后,相信童鞋对 __init__ 方法已经非常的熟悉了.这个方法通常是 在初始化一个实例的时候使用的. 例如: class MysqlConnector(obje ...

  2. reduce的使用

    reduce的使用:https://blog.csdn.net/xiasohuai/article/details/82152432

  3. mysql以及mysql bench安装教程

    首先,我们需要去官网下载mysql(这里以下载) 1 2 3 4 5 下载好了自己好了之后,点击安装好的东西出现如下界面: 1.接受使用条款并点击next 2.点击custom,可以根据个人习惯进行安 ...

  4. HDU 6662 Acesrc and Travel 换根DP,宇宙最傻记录

    #include<bits/stdc++.h> typedef long long ll; using namespace std; const int maxn=1e6+50; cons ...

  5. java程序中访问https时,报 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    在java中使用https访问数据时报异常: Caused by: sun.security.validator.ValidatorException: PKIX path building fail ...

  6. js单选和全选

    列子: //拿到选中的单选框 一.var objs = $(".detail") for(var obj in objs){ var isCheck = obj.is(':chec ...

  7. Oracle VM VirtualBox 安装 Centos7 并配置静态IP

    新建虚拟电脑 选择类型和版本 设置内存大小 现在创建虚拟硬盘 选择VDI 硬盘足够就选择 固定大小 选择虚拟硬盘存储位置不要放在默认的C盘下,设置大小为30G 等待创建虚拟硬盘 虚拟硬盘创建成果之后 ...

  8. Support for the experimental syntax 'classProperties' isn't currently enabled

    项目中使用高级语法报错, 报错信息 SyntaxError: E:\workdata\webpackVue\src\index.js: Support for the experimental syn ...

  9. python之multiprocessing多进程

    multiprocessing 充分利用cpu多核一般情况下cpu密集使用进程池,IO密集使用线程池.python下想要充分利用多核CPU,就用多进程. Process 类Process 类用来描述一 ...

  10. dedecms 缩略图路径修改