Effective C++笔记

=================================================================

最近再一次重读Effective这本书,发现——C++真是太复杂了,要真正搞懂C++里面的东西真的需要你一两年的工业编程经验,在学校里面的编程大部分不能真正体会到C++的威力,看过Primer这本书也有两次,可是要是不读Effective这本书,真的不会体会到C++的复杂性,当然,也是真的,Primer这本书是一本非常好的书,2012年我在燕大买了这本书,在燕大的图书馆里陆陆续续地看完了第一遍,一个印象:这绝不会是一本好的入门书籍,但是它是一本好的随身词典。第二遍是这学期看的,收获也是很大,我想将来还必须一遍一遍地再看下去啊。

——2014/4/28  Pm. 机电实验大楼A 6楼

=================================================================

IT男的双十一就只能去买书。买了本《Effective C++》,决定近期和《算法导论》一起看。

这两天看了几个,记录下来供以后复习使用。

条款01:视C++为一个语言联邦(View C++ as   a federation of languages)

  • C
  • Object-Oriented C++
  • Template C++
  • STL

条款02:尽量以const,enum,inline替换#define(Prefer consts,enums,and inline to #defines)

这个条款可以理解为“以编译器替换预处理器”,因为#define不被视为语言的一部分。

  • 对于单纯常量,最好以const对象或enums替换#define
  • 对于形似函数的宏(macros),最好改用inline函数代替#define

条款03:尽可能使用const(Use const whenever possible)

  • 将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任何作用域内的对象、函数参数、函数返回值、成员函数本体
  • 编译器强制实施bitwise  constness,但你编写程序时应该使用“概念上的常量性”
  • 当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复

条款04:确定对象被使用前已被初始化(Make sure that objects are initialized before they're used)

  • 为内置型对象进行初始化,因为C++不保证初始化它们
  • 构造函数最好使用成员初始列,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排列次序应该和它们在class中的声明次序相同
  • 为免除“跨编译单元之初始化次序”问题,请以local static 对象替换non-local static 对象

2013/12/9  PS:今天开始继续看,就是这些条条框框太容易忘了。现在只能先走第一遍了。


条款05:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls )

条款06:若不想使用编译器自动生成的函数,就该明确拒绝(Explicitly disallow the use of compiler-generated functions you do not want)

条款07:为多态基类声明virtual析构函数(Declare destructors virtual in polymorphic base classes)









你可能感兴趣的:(Effective C++笔记)