读书笔记之《Effective C++》条目篇

文|Seraph

条目篇主要是记录得出的结果,用作以后翻查遵循。

中英术语对照表

以下是本书的翻译中英术语表:

英文术语 中文译词
abstract 抽象的
abstraction 抽象性、抽象件

导读

  1. 本书的目的是强调那些常常被漠视的C++编程方向与观点。

  2. 定义式(definition)的任务是提供编译器一些声明式所遗漏的细节。

  • 对对象而言,定义式是编译器为此对象拨内存的地点;
  • 对funciton或funciton template而言,定义式提供了代码本体;
  • 对class或class template而言,定义式列出他们的成员 。
  1. 构造函数要不没有参数,要不就是每个参数都是缺省值。

  2. TR1("Technical Report 1")是一份规范,描述加入C++标准程序库的诸多新机能。
    所有TR1组件都被置于命名空间tr1内,后者嵌套于命名空间std内。

  3. Boost是一个组织,亦是一个网站,提供可移植、同僚复审、源码开放的C++程序库。

一、让自己习惯C++

条款 01:视C++为一个语言联邦

C++高效编程守则状况而变化,取决于你使用C++的哪一部分。
C++有以下四个次语言:

  • C
  • Object-Oriented C++
  • Template C++
  • STL
条款 02:尽量以const、enum、inline替换#define
  1. 对于单纯常量,最好以const对象或enums替换#define。
  2. 对于形似函数的宏(macros),最好改用inline函数替换#define。
条款 03:尽可能使用const
条款 04:确定对象使用前被初始化

二、构造/析构/赋值运算

条款 05:C++默认编写并调用的函数
条款 06:不想使用默认生成的函数,可以明确拒绝
条款 07:多态基类声明virtual析构函数
条款 08:别让异常逃离析构函数
条款 09:不要在构造和析构函数调用virtual函数
条款 10:令operator=返回reference to *this
条款 11:在operator=中处理"自我赋值"
条款 12:复制对象的时候勿忘其每个部分

三、资源管理

条款 13:以对象管理资源
条款 14:在资源管理类中小心copy行为
条款 15:在资源管理类中提供对原始资源的访问
条款 16:成对的使用new和delete
条款 17:以单独的语句将newed对象置入shared_ptr

四、设计与生命

条款 18、让接口容易被正确使用,不易被误用
条款 19、设计class
条款 20、以pass-by-reference-const替换pass-by-value
条款 21、不要返回临时对象的引用
条款 22、将成员变量声明为private
条款 23、宁以non-member、non-friend函数替换member函数
条款 24、若所有参数皆需类型转换,那么请采用non-member函数
条款 25、写一个不抛出异常的swap函数

五、实现

条款 26、尽可能延后变量定义得时间
条款 27、尽量避免转型
条款 28、避免返回一个指针、引用或者迭代器指向类内的成员
条款 29、异常安全函数
条款 30、inline 函数
条款 31、编译依存关系降低至最低

六、继承与面向对象设计

条款 32、确保public继承是is-a关系
条款 33、名称遮掩问题
条款 34、接口继承与实现继承
条款 35、考虑virtual函数以外的选择
条款 36、不要重新定义继承来的non-virtual函数
条款 37、不要重新定义重写函数(virtual)的默认参数
条款 38、类与类之间的关系:复合(has a的关系)
条款 39、私有继承
条款 40、多重继承

七、模板与泛型编程

条款 41、隐式接口和编译器多态
条款 42、了解typename
条款 43、调用基类模板成员
条款 44、将与template参数无关的代码抽离到模板外
条款 45、运用成员函数模板接受所有兼容类型
条款 46、需要类型转换时请为模板定义非成员函数
条款 47、traits编程技巧
条款 48、模板元编程

八、定制new和delete

条款 49、了解new-handler的行为
条款 50、了解new和delete的合理替换时机
条款 51:编写new和delete时需固守常规
条款 52:写了placemant new也要写placement delete

九、杂项讨论

条款 53:不要轻忽编译器的警告
条款 54:让自己熟悉包括TR1在内的标准程序库
条款 55:让自己熟悉Boost

猜你喜欢

转载自blog.csdn.net/weixin_34295316/article/details/86788935
今日推荐