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
· · · · · · (
收起)