Beschreibung:
Peter Gottschling is founder of SimuNova, a company that develops the Matrix Template Library (MTL4) and offers C++ training. He is a member of the ISO C++ standards committee, vice-chair of Germany's programming language standards committee, and founder of the C++ User Group in Dresden. He earned his Ph.D. in computer science at Technische Universität Dresden in 2002.
Peter Gottschling's Discovering Modern C++, Second Edition is an intensive introduction that guides you smoothly to sophisticated approaches based on advanced features. Thoroughly updated for C++17 and C++20, this Second Edition introduces key concepts using examples from many technical problem domains, drawing on his extensive experience training professionals and teaching C++ to students of physics, math, and engineering.
Preface xixAcknowledgments xxvAbout the Author xxviiChapter 1: C++ Basics 11.1 Our First Program 11.2 Variables 41.3 Operators 121.4 Expressions and Statements 221.5 Functions 301.6 Error Handling 351.7 I/O 411.8 Arrays, Pointers, and References 521.9 Structuring Software Projects 641.10 Exercises 69Chapter 2: Classes 712.1 Program for Universal Meaning, Not Technical Details 712.2 Members 732.3 Setting Values: Constructors and Assignments 782.4 Destructors 1052.5 Method Generation Summary 1112.6 Accessing Member Variables 1122.7 Operator Overloading Design 1172.8 Exercises 126Chapter 3: Generic Programming 1293.1 Function Templates 1293.2 Namespaces and Function Lookup 1383.3 Class Templates 1473.4 Type Deduction and Definition 1543.5 Template Specialization 1623.6 Non-Type Parameters for Templates 1743.7 Functors 1773.8 Lambda 1853.9 Variable Templates 1903.10 Programming with Concept(s) 1923.11 Variadic Templates 2003.12 Exercises 208Chapter 4: Libraries 2114.1 Standard Template Library 2114.2 Numerics 2394.3 Meta-programming 2524.4 Utilities 2564.5 The Time Is Now 2674.6 Concurrency 2704.7 Scientific Libraries Beyond the Standard 2824.8 Exercises 285Chapter 5: Meta-Programming 2895.1 Let the Compiler Compute 2895.2 Providing and Using Type Information 2975.3 Expression Templates 3185.4 Meta-Tuning: Write Your Own Compiler Optimization 3285.5 Optimizing with Semantic Concepts 3545.6 Turing Completeness 3595.7 Exercises 362Chapter 6: Object-Oriented Programming 3656.1 Basic Principles 3656.2 Removing Redundancy 3796.3 Multiple Inheritance 3806.4 Dynamic Selection by Sub-typing 3876.5 Conversion 3896.6 Advanced Techniques 3976.7 Exercises 405Chapter 7: Scientific Projects 4077.1 Implementation of ODE Solvers 4077.2 Creating Projects 4187.3 Modules 4307.4 Some Final Words 434Appendix A: Clumsy Stuff 435A.1 More Good and Bad Scientific Software 435A.2 Basics in Detail 441A.3 Real-World Example: Matrix Inversion 449A.4 Class Details 458A.5 Method Generation 462A.6 Template Details 474A.7 More on Libraries 479A.8 Dynamic Selection in Old Style 480A.9 More about Meta-Programming 481A.10 Linking to C Code 489Appendix B: Programming Tools 491B.1 g++ 491B.2 Debugging 492B.3 Memory Analysis 496B.4 gnuplot 498B.5 Unix, Linux, and Mac OS 498Appendix C: Language Definitions 501C.1 Value Categories 501C.2 Operator Overview 502C.3 Conversion Rules 504Bibliography 507Subject Index 513