Description

Book Synopsis

Scott Meyers is one of the world's foremost authorities on C++, providing training and consulting services to clients worldwide. He is the author of the best-selling Effective C++ series of books (Effective C++, More Effective C++, and Effective STL) and of the innovative Effective C++ CD. He is consulting editor for Addison Wesley's Effective Software Development Series and is a founding member of the Advisory Board for The C++ Source (http://www.artima.com/cppsource). He holds a Ph.D. in Computer Science from Brown University. His web site is http://www.aristeia.com.



Table of Contents
Preface xv Acknowledgments xvii Introduction 1 Chapter 1: Accustoming Yourself to C++ 11

Item 1: View C++ as a federation of languages. 11

Item 2: Prefer 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: Constructors, Destructors, and Assignment Operators 34

Item 5: Know what functions C++ silently writes and calls. 34

Item 6: Explicitly disallow the use of compiler-generated functions you do not want. 37

Item 7: Declare destructors virtual in polymorphic base classes. 40

Item 8: Prevent exceptions from leaving destructors. 44

Item 9: Never call virtual functions during construction or destruction. 48

Item 10: Have assignment operators return a reference to *this. 52

Item 11: Handle assignment to self in operator=. 53

Item 12: Copy all parts of an object. 57

Chapter 3: Resource Management 61

Item 13: Use objects to manage resources. 61

Item 14: Think carefully about copying behavior in resource-managing classes. 66

Item 15: Provide access to raw resources in resource-managing classes. 69

Item 16: Use the same form in corresponding uses of new and delete. 73

Item 17: Store newed objects in smart pointers in standalone statements. 75

Chapter 4: Designs and Declarations 78

Item 18: Make interfaces easy to use correctly and hard to use incorrectly. 78

Item 19: Treat class design as type design. 84

Item 20: Prefer pass-by-reference-to-const to pass-by-value. 86

Item 21: Don’t try to return a reference when you must return an object. 90

Item 22: Declare data members private. 94

Item 23: Prefer non-member non-friend functions to member functions. 98

Item 24: Declare non-member functions when type conversions should apply to all parameters. 102

Item 25: Consider support for a non-throwing swap. 106

Chapter 5: Implementations 113

Item 26: Postpone variable definitions as long as possible. 113

Item 27: Minimize casting. 116

Item 28: Avoid returning “handles” to object internals. 123

Item 29: Strive for exception-safe code. 127

Item 30: Understand the ins and outs of inlining. 134

Item 31: Minimize compilation dependencies between files. 140

Chapter 6: Inheritance and Object-Oriented Design 149

Item 32: Make sure public inheritance models “is-a.” 150

Item 33: Avoid hiding inherited names. 156

Item 34: Differentiate between inheritance of interface and inheritance of implementation. 161

Item 35: Consider alternatives to virtual functions. 169

Item 36: Never redefine an inherited non-virtual function. 178

Item 37: Never redefine a function’s inherited default parameter value. 180

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 compile-time 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. 212

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 239

Item 49: Understand the behavior of the new-handler. 240

Item 50: 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 277 Index 280

Effective C

Product form

£36.44

Includes FREE delivery

RRP £40.49 – you save £4.05 (10%)

Order before 4pm tomorrow for delivery by Tue 13 Jan 2026.

A Paperback / softback by Scott Meyers

2 in stock


    View other formats and editions of Effective C by Scott Meyers

    Publisher: Pearson Education (US)
    Publication Date: 02/06/2005
    ISBN13: 9780321334879, 978-0321334879
    ISBN10: 0321334876

    Description

    Book Synopsis

    Scott Meyers is one of the world's foremost authorities on C++, providing training and consulting services to clients worldwide. He is the author of the best-selling Effective C++ series of books (Effective C++, More Effective C++, and Effective STL) and of the innovative Effective C++ CD. He is consulting editor for Addison Wesley's Effective Software Development Series and is a founding member of the Advisory Board for The C++ Source (http://www.artima.com/cppsource). He holds a Ph.D. in Computer Science from Brown University. His web site is http://www.aristeia.com.



    Table of Contents
    Preface xv Acknowledgments xvii Introduction 1 Chapter 1: Accustoming Yourself to C++ 11

    Item 1: View C++ as a federation of languages. 11

    Item 2: Prefer 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: Constructors, Destructors, and Assignment Operators 34

    Item 5: Know what functions C++ silently writes and calls. 34

    Item 6: Explicitly disallow the use of compiler-generated functions you do not want. 37

    Item 7: Declare destructors virtual in polymorphic base classes. 40

    Item 8: Prevent exceptions from leaving destructors. 44

    Item 9: Never call virtual functions during construction or destruction. 48

    Item 10: Have assignment operators return a reference to *this. 52

    Item 11: Handle assignment to self in operator=. 53

    Item 12: Copy all parts of an object. 57

    Chapter 3: Resource Management 61

    Item 13: Use objects to manage resources. 61

    Item 14: Think carefully about copying behavior in resource-managing classes. 66

    Item 15: Provide access to raw resources in resource-managing classes. 69

    Item 16: Use the same form in corresponding uses of new and delete. 73

    Item 17: Store newed objects in smart pointers in standalone statements. 75

    Chapter 4: Designs and Declarations 78

    Item 18: Make interfaces easy to use correctly and hard to use incorrectly. 78

    Item 19: Treat class design as type design. 84

    Item 20: Prefer pass-by-reference-to-const to pass-by-value. 86

    Item 21: Don’t try to return a reference when you must return an object. 90

    Item 22: Declare data members private. 94

    Item 23: Prefer non-member non-friend functions to member functions. 98

    Item 24: Declare non-member functions when type conversions should apply to all parameters. 102

    Item 25: Consider support for a non-throwing swap. 106

    Chapter 5: Implementations 113

    Item 26: Postpone variable definitions as long as possible. 113

    Item 27: Minimize casting. 116

    Item 28: Avoid returning “handles” to object internals. 123

    Item 29: Strive for exception-safe code. 127

    Item 30: Understand the ins and outs of inlining. 134

    Item 31: Minimize compilation dependencies between files. 140

    Chapter 6: Inheritance and Object-Oriented Design 149

    Item 32: Make sure public inheritance models “is-a.” 150

    Item 33: Avoid hiding inherited names. 156

    Item 34: Differentiate between inheritance of interface and inheritance of implementation. 161

    Item 35: Consider alternatives to virtual functions. 169

    Item 36: Never redefine an inherited non-virtual function. 178

    Item 37: Never redefine a function’s inherited default parameter value. 180

    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 compile-time 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. 212

    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 239

    Item 49: Understand the behavior of the new-handler. 240

    Item 50: 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 277 Index 280

    Recently viewed products

    © 2026 Book Curl

      • American Express
      • Apple Pay
      • Diners Club
      • Discover
      • Google Pay
      • Maestro
      • Mastercard
      • PayPal
      • Shop Pay
      • Union Pay
      • Visa

      Login

      Forgot your password?

      Don't have an account yet?
      Create account