书籍详情
Effective C++ Third Edition:改善程序技术与设计思维的55个有效做法(英文版)
作者:(美)玛雅尔斯(Meyers,S.) 著
出版社:电子工业出版社
出版时间:2006-03-01
ISBN:9787121008276
定价:¥45.00
购买这本书可以去
内容简介
有人说C++程序员可以分成两类,读过Effective C++的和没读过的。然而世界顶级C++大师Scott Meyers成名之作的第三版的确这样深入。或许有点夸张了,但无论如何,当您拥有这本书之后,就获得了迅速提升自己C++功力的一个契机。在国际上﹐本书所引起的反响之大﹐波及整个计算器技术出版领域﹐余音至今未绝。几乎在所有C++书籍的推荐名单上﹐本书都会位于前三名。作者高超的技术把握力﹐独特的视角﹑诙谐轻松的写作风格﹑独具匠心的内容组织﹐都受到极大的推崇和仿效。甚至连本书简洁明快的命名风格﹐也有着一种特殊的号召力﹐我可以轻易列举出一大堆类似名字﹐比如Meyers本人的More Effective C++和Effective STL﹐Don Box的EffectiveCOM﹐Stan Lippman主编的Efficient C++系列﹐Herb Sutter的Exceptional C++等等。要知道﹐这可不是出版社的有意安排﹐而且上面这些作者﹐同样是各自领域里的绝顶大师﹐决非人云亦云﹑欺世盗名之辈。这种奇特的现象﹐只能解释为人们对这本书衷心的赞美和推崇。这本书不是读完一遍就可以束之高阁的快餐读物,也不是能够立刻解决手边问题的参考手册,而是需要您去反复阅读体会,极力融入自己思想之中,融入自己每一次敲击键盘的动作之中。C++是真正程序员的语言,背后有着精深的思想与无以伦比的表达能力,这使得它具有类似宗教般的魅力。希望这本书能够帮助您跨越C++的重重险阻,领略高处才有的壮美,做一个成功而快乐的C++程序员。
作者简介
Scott Meyers,is one of the world s foremost experts on C++ software development He is author of the best-selling Effective C++ series (Effective C++,More Effective C++,and Effective STL) ,designer and author of the innovative Effective C++ CD,consulting editor for Addison-Wesley s Effective Software Development Series;and a member of theadvisory board for Software Development magaxine.He has served on the technical advisory boards for seveal start-up companies Meyers received his Ph,D,ln computer science from Brown University in 1993.His web site is www.aristeia.com.
目录
Preface xv
Acknowledgments xvii
Introduction 1
Chapter 1:Accustoming Yourselft0 C++ 11
Item 1:View C++as a flederation oflanguages. 11
Item 2:Prefler consts,enums,and inlines to #defines. 13
Item 3:Use const whenever pOSSible.17
Item 4:Make sure that objects are initialized before they're used. 26
Chapter 2:C0nstI'Uctors,DestI'Uctors,and
Assignment operators 34
Item 5:Know what functions C++silently writes and calls. 34
Item 6:Explicitly disanOW the use of compilergenerated
functions yOH do not want. 37
Item 7:Declare destruetors virtual in polymorphic base dasses. 40
Item 8:Prevent exceptions flrom leaVing destructors. 44
Item 9:Never call Virtual functions during construetion Or destruction. 48
Item 10:Have assignment operators return a reference tO*this. 52
Item 11:Handle assignment to self in operator=. 53
Item 19:CoPY a11 parts 0fan 0bject. 57
Chapter 3:Resource ManageInent 61
Item 13:Use objects to manage resources. 61
Item 14:Think carefully about copying behavior in resource-managing cIasses. 66
Item 15:Provide access t0 raw resources in resourcemanaging classes.69
Item 16:Use the same form in corresponding uses 0f new and delete.73
Item 17:store newed 0bjects in smart pointers in standalone statements.75
Chapter 4:Designs and Declarations 78
Item 18:Make interfaces easy t0 use correctly and hard t0 use incorrectly. 78
Item 19:Treat claSS design as type design. 84
Item 20:Prefer pass-by-reference-to-const t0 pass_by-value. 86
Item 21:Don’try to return a refefence when you must return an o bject. 90
Item 22:Declare data members private. q4
Item 23:Prefer non-member non-friend functions to member functions. 98
Item 24:Declare non-member functions when type
conversions shonld apply to a11 parameters. 102
Item 25:Consider SUpport for a non-throwing swap. 106
Chapter 5:Implementations 113
Item 26:P0stpone variable definitions as 10ng as possible. 113
Item 27:Minimize casting. 116
Item 28:Avoid returning“handles”to object internals. 123
Itam 29:strive for exception-safe code. 127
Item 30:Understand the ins and outs 0f inlining. 134
Item 31:Minimize compilation dependencies between files. 140
Chapter 6:Inheritance and 0bject一0riented Design 149
Item 32:Make sure public inheritance models“is-a.” 150
Item 33:Avoid hiding inherited names. 156
Item 34:DifieFentiate between inheritance of interface and
inheritance of implementation.161
Item 35:COIlSider alternatives to virtual functions. 169
Item 36:Never redefine an inherited non-virtnal fLlnction. 178
Item 37: Never redefine a function's inherited default parameter value. 18o
Item 38: Model "has-a" or is-implemented-in-terms-of' through composition. 184
Item 39: Use private inheritance judiciously. 187
Item 40: Use multiple inheritance judiciously. 192
Chapter 7: Templates and Generic Programming 199
Item 41: Understand implicit interfaces and compiletime polymorphism. 199
Item 42: Understand the two meanings of typename. 203
Item 43: Know how to access names in templatized base classes. 207
Item 44: Factor parameter-independent code out of templates. 219
Item 45: Use member function templates to accept "all compatible types." 218
Item 46: Define non-member functions inside templates
when type conversions are desired. 222
Item 47: Use traits classes for information about types. 226
Item 48: Be aware of template metaprogramming. 233
Chapter 8: Customizing new and delete 939
Item 49: Understand the behavior of the new-handler. 240
Item 5o: Understand when it makes sense to replace new and delete. 247
Item 51: Adhere to convention when writing new and delete. 252
Item 52: Write placement delete if you write placement new. 256
Chapter 9: Miscellany 262
Item 53: Pay attention to compiler warnings. 262
Item 54: Familiarize yourself with the standard library, including TR1. 263
Item 55: Familiarize yourself with Boost. 269
Appendix A: Beyond Effective C++ 273
Appendix B: Item Mappings Between Second and Third Editions 977
Index 280
Acknowledgments xvii
Introduction 1
Chapter 1:Accustoming Yourselft0 C++ 11
Item 1:View C++as a flederation oflanguages. 11
Item 2:Prefler consts,enums,and inlines to #defines. 13
Item 3:Use const whenever pOSSible.17
Item 4:Make sure that objects are initialized before they're used. 26
Chapter 2:C0nstI'Uctors,DestI'Uctors,and
Assignment operators 34
Item 5:Know what functions C++silently writes and calls. 34
Item 6:Explicitly disanOW the use of compilergenerated
functions yOH do not want. 37
Item 7:Declare destruetors virtual in polymorphic base dasses. 40
Item 8:Prevent exceptions flrom leaVing destructors. 44
Item 9:Never call Virtual functions during construetion Or destruction. 48
Item 10:Have assignment operators return a reference tO*this. 52
Item 11:Handle assignment to self in operator=. 53
Item 19:CoPY a11 parts 0fan 0bject. 57
Chapter 3:Resource ManageInent 61
Item 13:Use objects to manage resources. 61
Item 14:Think carefully about copying behavior in resource-managing cIasses. 66
Item 15:Provide access t0 raw resources in resourcemanaging classes.69
Item 16:Use the same form in corresponding uses 0f new and delete.73
Item 17:store newed 0bjects in smart pointers in standalone statements.75
Chapter 4:Designs and Declarations 78
Item 18:Make interfaces easy t0 use correctly and hard t0 use incorrectly. 78
Item 19:Treat claSS design as type design. 84
Item 20:Prefer pass-by-reference-to-const t0 pass_by-value. 86
Item 21:Don’try to return a refefence when you must return an o bject. 90
Item 22:Declare data members private. q4
Item 23:Prefer non-member non-friend functions to member functions. 98
Item 24:Declare non-member functions when type
conversions shonld apply to a11 parameters. 102
Item 25:Consider SUpport for a non-throwing swap. 106
Chapter 5:Implementations 113
Item 26:P0stpone variable definitions as 10ng as possible. 113
Item 27:Minimize casting. 116
Item 28:Avoid returning“handles”to object internals. 123
Itam 29:strive for exception-safe code. 127
Item 30:Understand the ins and outs 0f inlining. 134
Item 31:Minimize compilation dependencies between files. 140
Chapter 6:Inheritance and 0bject一0riented Design 149
Item 32:Make sure public inheritance models“is-a.” 150
Item 33:Avoid hiding inherited names. 156
Item 34:DifieFentiate between inheritance of interface and
inheritance of implementation.161
Item 35:COIlSider alternatives to virtual functions. 169
Item 36:Never redefine an inherited non-virtnal fLlnction. 178
Item 37: Never redefine a function's inherited default parameter value. 18o
Item 38: Model "has-a" or is-implemented-in-terms-of' through composition. 184
Item 39: Use private inheritance judiciously. 187
Item 40: Use multiple inheritance judiciously. 192
Chapter 7: Templates and Generic Programming 199
Item 41: Understand implicit interfaces and compiletime polymorphism. 199
Item 42: Understand the two meanings of typename. 203
Item 43: Know how to access names in templatized base classes. 207
Item 44: Factor parameter-independent code out of templates. 219
Item 45: Use member function templates to accept "all compatible types." 218
Item 46: Define non-member functions inside templates
when type conversions are desired. 222
Item 47: Use traits classes for information about types. 226
Item 48: Be aware of template metaprogramming. 233
Chapter 8: Customizing new and delete 939
Item 49: Understand the behavior of the new-handler. 240
Item 5o: Understand when it makes sense to replace new and delete. 247
Item 51: Adhere to convention when writing new and delete. 252
Item 52: Write placement delete if you write placement new. 256
Chapter 9: Miscellany 262
Item 53: Pay attention to compiler warnings. 262
Item 54: Familiarize yourself with the standard library, including TR1. 263
Item 55: Familiarize yourself with Boost. 269
Appendix A: Beyond Effective C++ 273
Appendix B: Item Mappings Between Second and Third Editions 977
Index 280
猜您喜欢