Published by Addison-Wesley Professional (October 10, 2022) © 2023

Bjarne Stroustrup
    VitalSource eTextbook (Lifetime access)
    €31,99
    Adding to cart… The item has been added
    ISBN-13: 9780136823544

    Tour of C++, A ,3rd edition

    Language: English

    In A Tour of C++, Third Edition, Bjarne Stroustrup provides an overview of ISO C++, C++20, that aims to give experienced programmers a clear understanding of what constitutes modern C++. Featuring carefully crafted examples and practical help in getting started, this revised and updated edition concisely covers most major language features and the major standard-library components needed for effective use.

    Stroustrup presents C++ features in the context of the programming styles they support, such as object-oriented and generic programming. His tour is remarkably comprehensive. Coverage begins with the basics, then ranges widely through more advanced topics, emphasizing newer language features. This edition covers many features that are new in C++20 as implemented by major C++ suppliers, including modules, concepts, coroutines, and ranges. It even introduces some library components in current use that are not scheduled for inclusion in the standard until C++23.

    This authoritative guide does not aim to teach you how to program (for that, see Stroustrup's Programming: Principles and Practice Using C++, Second Edition), nor will it be the only resource you'll need for C++ mastery (for that, see Stroustrup's The C++ Programming Language, Fourth Edition, and recommended online sources). If, however, you are a C or C++ programmer wanting greater familiarity with the current C++ language, or a programmer versed in another language wishing to gain an accurate picture of the nature and benefits of modern C++, you won't find a shorter or simpler introduction.

    Preface xi

    Chapter 1: The Basics 1
    1.1 Introduction 1
    1.2 Programs 2
    1.3 Functions 4
    1.4 Types, Variables, and Arithmetic 5
    1.5 Scope and Lifetime 9
    1.6 Constants 10
    1.7 Pointers, Arrays, and References 11
    1.8 Tests 14
    1.9 Mapping to Hardware 16
    1.10 Advice 19

    Chapter 2: User-Defined Types 21
    2.1 Introduction 21
    2.2 Structures 22
    2.3 Classes 23
    2.4 Enumerations 25
    2.5 Unions 27
    2.6 Advice 28

    Chapter 3: Modularity 29
    3.1 Introduction 29
    3.2 Separate Compilation 30
    3.3 Namespaces 35
    3.4 Function Arguments and Return Values 37
    3.5 Advice 42

    Chapter 4: Error Handling 43
    4.1 Introduction 43
    4.2 Exceptions 44
    4.3 Invariants 45
    4.4 Error-Handling Alternatives 47
    4.5 Assertions 48
    4.6 Advice 51

    Chapter 5: Classes 53
    5.1 Introduction 53
    5.2 Concrete Types 54
    5.3 Abstract Types 60
    5.4 Virtual Functions 62
    5.5 Class Hierarchies 63
    5.6 Advice 69

    Chapter 6: Essential Operations 71
    6.1 Introduction 71
    6.2 Copy and Move 74
    6.3 Resource Management 78
    6.4 Operator Overloading 80
    6.5 Conventional Operations 81
    6.6 User-Defined Literals 84
    6.7 Advice 85

    Chapter 7: Templates 87
    7.1 Introduction 87
    7.2 Parameterized Types 88
    7.3 Parameterized Operations 93
    7.4 Template Mechanisms 99
    7.5 Advice 102

    Chapter 8: Concepts and Generic Programming 103
    8.1 Introduction 103
    8.2 Concepts 104
    8.3 Generic Programming 112
    8.4 Variadic Templates 114
    8.5 Template Compilation Model 117
    8.6 Advice 117

    Chapter 9: Library Overview 119
    9.1 Introduction 119
    9.2 Standard-Library Components 120
    9.3 Standard-Library Organization 121
    9.4 Advice 124

    Chapter 10: Strings and Regular Expressions 125
    10.1 Introduction 125
    10.2 Strings 125
    10.3 String Views 128
    10.4 Regular Expressions 130
    10.5 Advice 136

    Chapter 11: Input and Output 137
    11.1 Introduction 137
    11.2 Output 138
    11.3 Input 139
    11.4 I/O State 141
    11.5 I/O of User-Defined Types 141
    11.6 Output Formatting 143
    11.7 Streams 146
    11.8 C-style I/O 149
    11.9 File System 150
    11.10 Advice 154

    Chapter 12: Containers 157
    12.1 Introduction 157
    12.2 vector 158
    12.3 list 162
    12.4 forward_list 164
    12.5 map 164
    12.6 unordered_map 165
    12.7 Allocators 167
    12.8 Container Overview 168
    12.9 Advice 170

    Chapter 13: Algorithms 173
    13.1 Introduction 173
    13.2 Use of Iterators 175
    13.3 Iterator Types 178
    13.4 Use of Predicates 181
    13.5 Algorithm Overview 181
    13.6 Parallel Algorithms 183
    13.7 Advice 183

    Chapter 14: Ranges 185
    14.1 Introduction 185
    14.2 Views 186
    14.3 Generators 188
    14.4 Pipelines 188
    14.5 Concepts Overview 190
    14.6 Advice 194

    Chapter 15: Pointers and Containers 195
    15.1 Introduction 195
    15.2 Pointers 196
    15.3 Containers 201
    15.4 Alternatives 208
    15.5 Advice 212

    Chapter 16: Utilities 213
    16.1 Introduction 213
    16.2 Time 214
    16.3 Function Adaption 216
    16.4 Type Functions 217
    16.5 source_location 222
    16.6 move() and forward() 223
    16.7 Bit Manipulation 224
    16.8 Exiting a Program 225
    16.9 Advice 225

    Chapter 17: Numerics 227
    17.1 Introduction 227
    17.2 Mathematical Functions 228
    17.3 Numerical Algorithms 229
    17.4 Complex Numbers 230
    17.5 Random Numbers 231
    17.6 Vector Arithmetic 233
    17.7 Numeric Limits 234
    17.8 Type Aliases 234
    17.9 Mathematical Constants 234
    17.10 Advice 235

    Chapter 18: Concurrency 237
    18.1 Introduction 237
    18.2 Tasks and threads 238
    18.3 Sharing Data 241
    18.4 Waiting for Events 243
    18.5 Communicating Tasks 245
    18.6 Coroutines 250
    18.8 Advice 253

    Chapter 19: History and Compatibility 255
    19.1 History 255
    19.2 C++ Feature Evolution 263
    19.3 C/C++ Compatibility 268
    19.4 Bibliography 271
    19.5 Advice 274

    Appendix: Module std 277
    A.1 Introduction 277
    A.2 Use What Your Implementation Offers 278
    A.3 Use Headers 278
    A.4 Make Your Own module std 278
    A.5 Advice 279

    Index 281