Effective C++ 目录

改变旧有的C习惯(Shifting from C to C++) 013
条款1
:尽量以 const 和 inline 取代 #define 013
Prefer const and inline to #define.
条款2:尽量以 <iostream> 取代 <stdio.h> 017
Prefer <iostream> to <stdio.h>.
条款3:尽量以 new 和 delete 取代 malloc() 和 free() 019
Prefer new and delete to malloc and free.
条款4:尽量使用 C++ 风格的注释形式 021
Prefer C++-style comments.

内存管理(Memory Management) 022
条款5
:使用相同形式的 new 和 delete 023
Use the same form in corresponding uses of new and delete.
条款6:记得在 destructor 中以delete 对付 pointer members 024
Use delete on pointer members in destructors.
条款7:为内存不足的状况预做准备 025
Be prepared for out-of-memory conditions.
条款8:撰写 operator new 和 operator delete 时应遵行公约 033
Adhere to convention when writing operator new and operator delete.
条款9:避免遮掩了 new 的正规形式 037
Avoid hiding the "normal" form of new.
条款10:如果你写了一个operator new,请对应也写一个operator delete 039
Write operator delete if you write operator new.

构造函数、析构函数和Assignment 运算符(Constructors, Destructors, and Assignment Operators) 049
条款11
:如果classes内动态配置有内存,请为此 class 宣告一个 copy constructor 和一个 assignment 运算符 049
Declare a copy constructor and an assignment operator for classes with dynamically allocated memory.
条款12:在 constructor 中尽量以 initialization 取代 assignment 052
Prefer initialization to assignment in constructors.
条款13:Initialization list 中的 members 初始化排列次序应该和其在 class 内的声明次序相同 057
List members in an initialization list in the order in which they are declared.
条款14:总是让 base class 拥有 virtual destructor 059
Make sure base classes have virtual destructors.
条款15:令 operator= 传回"*this 的 reference" 064
Have operator= return a reference to *this.
条款16:在 operator= 中为所有的 data members 赋予内容 068
Assign to all data members in operator=.
条款17:在 operator= 中检查是否"自己赋值给自己" 071
Check for assignment to self in operator=.

类与函数之设计和声明(Classes and Functions: Design and Declaration) 077
条款18
:努力让接口完满且最小化 079
Strive for class interfaces that are complete and minimal.
条款19:区分member functions, non-member functions和 friend functions三者 084
Differentiate among member functions, non-member functions, and friend functions.
条款20:避免将 data members 放在公开接口中 089
Avoid data members in the public interface.
条款21:尽可能使用 const 091
Use const whenever possible.
条款22:尽量使用 pass-by-reference(传址),少用 pass-by-value(传值) 098
Prefer pass-by-reference to pass-by-value.
条款23:当你必须传回object 时,不要尝试传回 reference 101
Don’t try to return a reference when you must return an object.
条款24:在函数重载(function overloading)和参数缺省化(parameter defaulting)之间,谨慎抉择 106
Choose carefully between function overloading and parameter defaulting.
条款25:避免对指针型别和数值型别进行重载 109
Avoid overloading on a pointer and a numerical type.
条款26:防卫潜伏的 ambiguity(模棱两可)状态 113
Guard against potential ambiguity.
条款27:如果不想使用编译器暗自产生的 member functions,就应该明白拒绝它 116
Explicitly disallow use of implicitly generated member functions you don’t want.
条款28:尝试切割 global namespace(全域命名空间) 117
Partition the global namespace.

类与函数之实现(Classes and Functions: Implementation) 123
条款29
:避免传回内部数据的 handles 123
Avoid returning "handles" to internal data.
条款30:避免写出member function,传回一个 non-const pointer 或 reference 并以之指向较低存取层级的 members 129
Avoid member functions that return non-const pointers or references to members less accessible than themselves.
条款31:千万不要传回"函数内 local 对象的 reference",或是"函数内以 new 获得的指针所指的对象" 131
Never return a reference to a local object or to a dereferenced pointer initialized by new within the function.
条款32:尽可能延缓变量定义式的出现 135
Postpone variable definitions as long as possible.
条款33:明智地运用 inlining 137
Use inlining judiciously.
条款34:将文件之间的编译依赖关系(compilation dependencies)降至最低 143
Minimize compilation dependencies between files.

继承机制与面向对象设计(Inheritance and Object-Oriented Design) 153
条款35
:确定你的 public inheritance 模塑出 "isa" 的关系 154
Make sure public inheritance models "isa."
条款36:区分"接口继承(interface inheritance)"和"实现继承(implementation inheritance)" 161
Differentiate between inheritance of interface and inheritance of implementation.
条款37:绝对不要重新定义一个继承而来的非虚拟函数 169
Never redefine an inherited nonvirtual function.
条款38:绝对不要重新定义一个继承而来的缺省参数值 171
Never redefine an inherited default parameter value.
条款39:避免在继承体系中做 cast down(向下转型)的动作 173
Avoid casts down the inheritance hierarchy.
条款40:通过 layering(分层技术)来模塑 has-a 或 is-implemented-in-terms-of 的关系 182
Model "has-a" or "is-implemented-in-terms-of" through layering.
条款41:区分 inheritance 和 templates 185
Differentiate between inheritance and templates.
条款42:明智地运用 private inheritance(私有继承) 189
Use private inheritance judiciously.
条款43:明智地运用多继承(multiple inheritance,MI) 194
Use multiple inheritance judiciously.
条款44:说出你的意思并了解你所说的每一句话 210
Say what you mean; understand what you’re saying.

杂项讨论(Miscellany) 212
条款45:知道 C++(编译器)默默为我们完成和调用哪些函数 212
Know what functions C++ silently writes and calls.
条款46:宁愿编译和连接时出错,也不要执行时才错 216
Prefer compile-time and link-time errors to runtime errors.
条款47:确保非局部静态对象在使用前被初始化 219
Ensure that non-local static objects are initialized before they’re used.
条款48:不要对编译器的警告讯息视而不见 223
Pay attention to compiler warnings.
条款49:尽量让自己熟悉 C++ 标准程序库 224
Familiarize yourself with the standard library.
条款50:加强自己对 C++ 的了解 232
Improve your understanding of C++.

返回《C++ 编程规范及惯用法》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有人说c++程序员可以分成两类,读过effective c++的和没读过的。世界顶级c++大师scott meyers成名之作的第三版的确当得起这样的评价。当您读过这本书之后,就获得了迅速提升自己c++功力的一个契机。.(2-1)   在国际上,本书所引起的反响,波及整个计算技术出版领域,余音至今未绝。几乎在所有c++书籍的推荐名单上,本书都会位于前三名。作者高超的技术把握力、独特的视角。诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。这种奇特的现象,只能解释为人们对这本书衷心的赞美和推祟。《effective c++》前两个版本的确抓住了全世界无数程序员的目光。原因十分显明:scott meyers 极富实践意义的c++ 研讨方式,描述出专家用以产出干净、正确、高效代码的经验法则和行事法则——也就是他们几乎总是做或不做的某些事。   这本书不是读完一遍就可以束之高阁的快餐读物,也不是用以解决手边问题的参考手册,而是需要您去反复阅读体会的,c++是真正程序员的语言,背后有着精深的思想与无与伦比的表达能力,这使得它具有类似宗教般的魅力。希望这本书自瞄帮助您跨越c抖的重重险阻,领略高处才有的壮美风光,做—个成功而快乐的c++程序员。...      本书一共组织 55 个准则,每一条准则描述一个编写出更好的 c++ 的方式。每一个条款的背后都有具体范例支撑。第三版有一半以上的篇幅是崭新内容,包括讨论资源管理和模板(templates)运用的两个新章。为反映出现代设计考虑,对第二版论题做了广泛的修订,包括异常(exceptions)、设计模式(design patterns)和多线程(multithreading)。      《effective c++》的重要特征包括:    * 高效的 classes、functions、templates 和inheritance hierarchies(继承体系)方面的专家级指导。    * 崭新的 "tr1" 标准程序库功能应用,以及与既有标准程序库组件的比较。    * 洞察 c++和其他语言(例如java、c#、c)之间的不同。此举有助于那些来自其他语言阵营的开发人员消化吸收 c++ 式的各种解法。(2-1)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值