C++ Core Guidelines Explained

C++ Core Guidelines Explained book cover

C++ Core Guidelines Explained

$44.99

In stock
0 out of 5

$44.99

SKU: 9780136875673 Category:
Title Range Discount
Trade Discount 5 + 25%

Description

  • Readable, concise, practical, and focused: makes the C++ Core Guidelines more accessible and usable
  • Covers interfaces, functions, classes, enumerations, resource management, expressions, statements, performance, concurrency, error handling, constants, immutability, templates, generics, and more
  • For all programmers using any modern version of C++, including C++17, C++14, and C++11
  • By renowned C++ instructor Rainer Grimm: reflects proven examples he has refined through years of classes and seminars

Use the C++ Core Guidelines to write better modern C++ programs, and incrementally improve existing code

  • Readable, concise, practical, and focused: makes the C++ Core Guidelines more accessible and usable
  • Covers interfaces, functions, classes, enumerations, resource management, expressions, statements, performance, concurrency, error handling, constants, immutability, templates, generics, and more
  • For all programmers using any modern version of C++, including C++17, C++14, and C++11
  • By renowned C++ instructor Rainer Grimm: reflects proven examples he’s refined through years of classes and seminars

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

C++ expert instructor Rainer Grimm offers accessible, practical coverage of the Core Guidelines that offer the most value to students learning the C++ programming language. Offering new insights, indispensable context, and proven C++ examples drawn from his courses and seminars, Grimm helps students get more value from the guidelines. 
The wide-ranging coverage of this text addresses C++ programming philosophy, interfaces, functions, classes, class hierarchies, enumerations, resource management, expressions, statements, performance, concurrency, error handling, constants, immutability, templates, generic programming, C-style programming, source files, the Standard Library, and more. Each section links to the original standard online, and wherever appropriate, Grimm previews advances from C++20 and C++23. With Grimm, students can use the C++ Core Guidelines to write C++ code that is more consistent, robust, and well-performing. 

Rainer Grimm has worked as a software architect, team lead, and instructor since 1999, and offered seminars on C++, Python, and proprietary software since 2002. He writes regularly on C++, Python, and Haskell, speaks at conferences on programming issues, and blogs weekly in English (modernescpp.com) and German (www.grimm-jaud.de/index.php/blog). Now an independent instructor, he offers seminars on modern C++ and Python. He has authored several books on modern C++, concurrency, and related topics.

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.

Additional information

Dimensions 0.90 × 6.90 × 9.00 in
Imprint

Format

ISBN-13

ISBN-10

Author

Subjects

c++ functions, c++ standard library, c++ source files, c++ templates, c++ immutability, c++ constants, c++ error handling, c++ concurrency, c++ performance, c++ expressions, c++ resource management, c++ enumerations, c++ class hierarchies, c++ classes, professional, c++ interfaces, c++ philosophy, c++ refactoring, stroustrup guidelines, modern cpp, c++ guidelines, c++ generics, Modern C++, Y-AA AW PROF – PROG LANGUAGES, IT Professional, Employability, higher education