C++ Basics
- 1.5 Introduction to iostream: cout, cin, and endl
- 1.9 Introduction to literals and operators
- 1.10 Introduction to expressions
C++ Basics: Functions and Files
- 2.5 Introduction to local scope
- 2.7 Forward declarations and definitions
- 2.11 Header files
- 2.12 Header guards
Debugging C++ Programs
- 3.6 Using an integrated debugger: Stepping
- 3.7 Using an integrated debugger: Running and breakpoints
- 3.8 Using an integrated debugger: Watching variables
- 3.9 Using an integrated debugger: The call stack
Fundamental Data Types
- 4.6 Fixed-width integers and size_t
- 4.8 Floating point numbers
- 4.11 Chars
Constants and Strings
- 5.4 The as-if rule and compile-time optimization
- 5.5 Constant expressions
- 5.6 Constexpr variables
- 5.8 Introduction to std::string_view
- 5.9 std::string_view (part 2)
Operators
- 6.7 Relational operators and floating point comparisons
Scope, Duration, and Linkage
- 7.6 Internal linkage
- 7.7 External linkage and variable forward declarations
- 7.9 Inline functions and variables
- 7.10 Sharing global constants across multiple files (using inline variables)
- 7.12 Scope, duration, and linkage summary
- 7.14 Unnamed and inline namespaces
Control Flow
- 8.6 Switch fallthrough and scoping
- 8.13 Introduction to random number generation
- 8.14 Generating random numbers using Mersenne Twister
Error Detection and Handling
- 9.4 Detecting and handling errors
- 9.5 std::cin and handling invalid input
- 9.6 Assert and static_assert
Function Overloading and Function Templates
- 11.6 Function templates
- 11.7 Function template instantiation
- 11.8 Function templates with multiple template types
- 11.10 Using function templates in multiple files
Constexpr Functions
Compound Types: References and Pointers
- 12.4 Lvalue references to const
- 12.12 Return by reference and return by address
- 12.14 Type deduction with pointers, references, and const
- 12.15 std::optional
Compound Types: Enums and Structs
- 13.4 Converting an enumeration to and from a string
- 13.5 Introduction to overloading the I/O operators
- 13.8 Struct aggregate initialization
- 13.14 Class template argument deduction (CTAD) and deduction guides
- 13.y Using a language reference
Introduction To Classes
More on Classes
- 15.1 The hidden “this” pointer and member function chaining
- 15.6 Static member variables
- 15.9 Friend classes and friend member functions
Fixed-size Arrays: std::array and C-style Arrays
- 17.5 Arrays of references via std::reference_wrapper
- 17.6 std::array and enumerations
- 17.11 C-style string symbolic constants
Iterators and Algorithms (under construction)
Functions
- 20.6 Introduction to lambdas (anonymous functions)
- 20.7 Lambda captures
Move Semantics and Smart Pointers
- 22.1 Introduction to smart pointers and move Semantics
- 22.3 Move constructors and move assignment
- 22.5 std::unique_ptr
- 22.6 std::shared_ptr
Inheritance
- 24.7 Calling inherited functions and overriding behavior
- 24.8 Hiding inherited functionality
Virtual Functions
- 25.3 The override and final specifiers, and covariant return types
- 25.4 Virtual destructors, virtual assignment, and overriding virtualization
- 25.5 Early binding and late binding
- 25.6 The virtual table
- 25.7 Pure virtual functions, abstract base classes, and interface classes
- 25.10 Dynamic casting
Exceptions
- 27.3 Exceptions, functions, and stack unwinding
- 27.5 Exceptions, classes, and inheritance
- 27.7 Function try blocks
- 27.8 Exception dangers and downsides
- 27.9 Exception specifications and noexcept
- 27.10 std::move_if_noexcept