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

  • F.1 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)

  • 18.4 Timing your code

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