Published by Addison-Wesley Professional (April 22, 2022) © 2022

Rainer Grimm
    VitalSource eTextbook (Lifetime access)
    €29,99
    Adding to cart… The item has been added
    ISBN-13: 9780136875611

    C++ Core Guidelines Explained: Best Practices for Modern C++ ,1st edition

    Language: English

    Write More Elegant C++ Programs

    The official C++ Core Guidelines provide consistent best practices for writing outstanding modern C++ code and improving legacy code, but they're organized as a reference for looking up one specific point at a time, not as a tutorial for working developers. In C++ Core Guidelines Explained, expert C++ instructor Rainer Grimm has distilled them to their essence, removing esoterica, sharing new insights and context, and presenting well-tested examples from his own training courses.

    Grimm helps experienced C++ programmers use the Core Guidelines with any recent version of the language, from C++11 onward. Most of his code examples are written for C++17, with added coverage of newer versions and C++20 wherever appropriate, and references to the official C++ Core Guidelines online.

    Whether you're creating new software or improving legacy code, Grimm will help you get more value from the Core Guidelines' most useful rules, as you write code that's safer, clearer, more efficient, and easier to maintain.

    • Apply the guidelines and underlying programming philosophy
    • Correctly use interfaces, functions, classes, enum, resources, expressions, and statements
    • Optimize performance, implement concurrency and parallelism, and handle errors
    • Work effectively with constants, immutability, templates, generics, and metaprogramming
    • Improve your C++ style, manage source files, and use the Standard Library

    "We are very pleased to see Rainer Grimm applying his teaching skills and industrial background to tackling the hard and necessary task of making the C++ Core Guidelines accessible to more people."
    --Bjarne Stroustrup and Herb Sutter, co-editors, C++ Core Guidelines

    Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

    List of selected C++ Core Guidelines xiii
    List of figures xxiii
    List of tables xxvii
    Foreword xxix
    Preface xxxi
    Acknowledgments xxxvii
    About the author xxxix

    Part I: The Guidelines 1

    Chapter 1: Introduction 3
    Target readership 3
    Aim 4
    Non-aims 4
    Enforcement 4
    Structure 4
    Major sections 5

    Chapter 2: Philosophy 7

    Chapter 3: Interfaces 15
    The curse of non-const global variables 16
    Dependency injection as a cure 18
    Making good interfaces 20
    Related rules 25

    Chapter 4: Functions 27
    Function definitions 28
    Parameter passing: in and out 32
    Parameter passing: ownership semantics 38
    Value return semantics 42
    Other functions 46
    Related rules 52

    Chapter 5: Classes and Class Hierarchies 53
    Summary rules 54
    Concrete types 58
    Constructors, assignments, and destructors 59
    Class hierarchies 98
    Overloading and overloaded operators 117
    Unions 126
    Related rules 129

    Chapter 6: Enumerations 131
    General rules 131
    Related rules 137

    Chapter 7: Resource Management 139
    General rules 140
    Allocation and deallocation 145
    Smart pointers 150
    Related rules 164

    Chapter 8: Expressions and Statements 165
    General 166
    Declarations 168
    Expressions 186
    Statements 199
    Arithmetic 204
    Related rules 210

    Chapter 9: Performance 213
    Wrong optimizations 214
    Wrong assumptions 214
    Enable optimization 218
    Related rules 230

    Chapter 10: Concurrency 231
    General guidelines 232
    Concurrency 245
    Parallelism 266
    Message passing 269
    Lock-free programming 273
    Related rules 277

    Chapter 11: Error Handling 279
    Design 281
    Implementation 283
    If you can't throw 288
    Related rules 292

    Chapter 12: Constants and Immutability 293
    Use const 294
    Use constexpr 298

    Chapter 13: Templates and Generic Programming 301
    Use 302
    Interfaces 305
    Definition 320
    Hierarchies 330
    Variadic templates 332
    Metaprogramming 336
    Other rules 362
    Related rules 372

    Chapter 14: C-Style Programming 375
    Entire source code available 376
    Entire source code not available 378

    Chapter 15: Source Files 383
    Interface and implementation files 384
    Namespaces 391

    Chapter 16: The Standard Library 397
    Containers 398
    Text 404
    Input and output 411
    Related rules 419

    Part II: Supporting Sections 421

    Chapter 17: Architectural Ideas 423

    Chapter 18: Nonrules and Myths 427

    Chapter 19: Profiles 437
    Pro.typeType safety 438
    Pro.boundsBounds safety 439
    Pro.lifetimeLifetime safety 439

    Chapter 20: Guidelines Support Library 441
    Views 441
    Ownership pointers 442
    Assertions 443
    Utilities 443

    Part III: Appendixes 445

    Appendix A: Enforcing the C++ Core Guidelines 447
    Visual Studio 448
    clang-tidy 450

    Appendix B: Concepts 453

    Appendix C: Contracts 457

    Index 459