“c++程序员可以分成两类,读过effective c++的和没读过的。”世界顶级c++大师scott meyers这部成名之作,与这句话一道在全球无数读者间广为传颂。几乎所有c++书籍推荐名单上﹐《effective c++:改善程序与设计的55个具体做法:第3版》都会位列三甲。作者高超的技术把握力、独特的视角﹑诙谐轻松的写作风格﹑独具匠心的内容组织﹐都受到极大的推崇和仿效。
对于国外技术图书,选择翻译版还是影印版,常让人陷入两难。本评注版力邀国内资深专家执笔,在英文原著基础上增加中文点评与注释,旨在融合二者之长,既保留经典的原创文字与味道,又以先行者的学研心得与实践感悟,对读者阅读与学习加以点拨、指明捷径。
经过评注的版本,更值得反复阅读与体会。希望这《effective c++:改善程序与设计的55个具体做法:第3版》能够帮助您跨越c++的重重险阻,领略高处才有的壮美风光,做一个成功而快乐的c++程序员。
......(更多)
Scott Meyers是全世界最知名的C++软件开发专家之一。他是畅销书《Effective C++》系列(Effective C++,More Effective C++,Effective STL)的作者,又是创新产品《Effective C++ CD》的设计者和作者,也是Addison-Wesley的“Effective Software Development Series”顾问编辑,以及《Software Development》杂志咨询板成员。他也为若干新公司的技术咨询板提供服务。Meyers于1993年自Brown大学获得计算机博士学位。
......(更多)
introduction(新增批注共2条) 1
chapter 1: accustoming yourself to c++
(新增批注共12条) 11
item 1: view c++ as a federation of languages. 11
item 2: prefer consts, enums, and inlines to #defines. 14
item 3: use const whenever possible. 19
item 4: make sure that objects are initialized before they’re used. 28
chapter 2: constructors, destructors, and assignment
operators(新增批注共9条) 37
item 5: know what functions c++ silently writes and calls. 37
item 6: explicitly disallow the use of compiler-generated functions
you do not want. 41
item 7: declare destructors virtual in polymorphic base classes. 43
item 8: prevent exceptions from leaving destructors. 49
item 9: never call virtual functions during construction or destruction. 53
item 10: have assignment operators return a reference to *this. 57
item 11: handle assignment to self in operator=. 58
item 12: copy all parts of an object. 62
chapter 3: resource management(新增批注共7条) 66
.item 13: use objects to manage resources. 66
item 14: think carefully about copying behavior in resource-managing classes. 71
item 15: provide access to raw resources in resource-managing classes. 74
item 16: use the same form in corresponding uses of new and delete. 78
item 17: store newed objects in smart pointers in standalone statements. 80
chapter 4: designs and declarations(新增批注共28条) 83
item 18: make interfaces easy to use correctly and hard to use incorrectly. 83
item 19: treat class design as type design. 89
item 20: prefer pass-by-reference-to-const to pass-by-value. 91
item 21: don’t try to return a reference when you must return an object. 96
item 22: declare data members private. 101
item 23: prefer non-member non-friend functions to member functions. 105
item 24: declare non-member functions when type conversions should
apply to all parameters. 109
item 25: consider support for a non-throwing swap. 113
chapter 5: implementations(新增批注共42条) 122
item 26: postpone variable definitions as long as possible. 122
item 27: minimize casting. 125
item 28: avoid returning “handles” to object internals. 133
item 29: strive for exception-safe code. 137
item 30: understand the ins and outs of inlining. 146
item 31: minimize compilation dependencies between files. 152
chapter 6: inheritance and object-oriented design
(新增批注共39条) 162
item 32: make sure public inheritance models “is-a.” 163
item 33: avoid hiding inherited names. 169
item 34: differentiate between inheritance of interface and inheritance of
implementation. 174
item 35: consider alternatives to virtual functions. 183
item 36: never redefine an inherited non-virtual function. 192
item 37: never redefine a function’s inherited default parameter value. 194
item 38: model “has-a” or is-implemented-in-terms-of” through composition. 198
item 39: use private inheritance judiciously. 201
item 40: use multiple inheritance judiciously. 207
chapter 7: templates and generic
programming(新增批注共28条) 215
item 41: understand implicit interfaces and compile-time polymorphism. 216
item 42: understand the two meanings of typename. 220
item 43: know how to access names in templatized base classes. 225
item 44: factor parameter-independent code out of templates. 230
item 45: use member function templates to accept “all compatible types.” 235
item 46: define non-member functions inside templates when type
conversions are desired. 240
item 47: use traits classes for information about types. 245
item 48: be aware of template metaprogramming. 251
chapter 8: customizing new and delete
(新增批注共17条) 258
item 49: understand the behavior of the new-handler. 259
item 50: understand when it makes sense to replace new and delete. 267
item 51: adhere to convention when writing new and delete. 272
item 52: write placement delete if you write placement new. 276
chapter 9: miscellany(新增批注共8条) 283
item 53: pay attention to compiler warnings. 283
item 54: familiarize yourself with the standard library, including tr1. 284
item 55: familiarize yourself with boost. 290
appendix a: beyond effective c++ 295
appendix b: item mappings between second
and third editions 299
index 302
......(更多)
Class的设计就是type的设计 。重载函数和操作符、控制内存的分配和归还、定义对象的初始化和总结。。。
1. “促进正确使用”的方法包括接口的一致性,以及与内置类型的行为兼容。 2. “阻止误用”的方法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。 3. 使用shared_ptr支持定制型删除器;也可以用来自动解除互斥锁。
......(更多)