Learn with clarity

A quieter way to learn C++.

A personal reading library for working through C++ one idea at a time—without the clutter.

Quick referenceFind C++ syntax at a glance.Compact summaries for fast lookup while you work.

Lessons

130 lessons
Learning progress100 / 130 done
77%
Chapter 1 · C++ basics Chapter done
  1. 1.6Uninitialized variables and undefined behavior Done
  2. 1.9Introduction to literals and operators Done
  3. 1.10Introduction to expressions Done
Chapter 2 · Functions and files Chapter done
  1. 2.1Introduction to functions Done
  2. 2.2Function return values (value-returning functions) Done
  3. 2.3Void functions (non-value returning functions) Done
  4. 2.4Introduction to function parameters and arguments Done
  5. 2.5Introduction to local scope Done
  6. 2.7Forward declarations and definitions Done
  7. 2.9Naming collisions and an introduction to namespaces Done
  8. 2.10Introduction to the preprocessor Done
  9. 2.11Header files Done
  10. 2.12Header guards Done
Chapter 4 · Fundamental data types Chapter done
  1. 4.1Introduction to fundamental data types Done
  2. 4.2Void Done
  3. 4.3Object sizes and the sizeof operator Done
  4. 4.4Signed integers Done
  5. 4.5Unsigned integers, and why to avoid them Done
  6. 4.6Fixed-width integers and size_t Done
  7. 4.7Introduction to scientific notation Done
  8. 4.8Floating point numbers Done
  9. 4.9Boolean values Done
  10. 4.11Chars Done
  11. 4.12Introduction to type conversion and static_cast Done
Chapter 5 · Constants and Strings Chapter done
  1. 5.1Constant variables (named constants) Done
  2. 5.2Literals Done
  3. 5.3Numeral systems (decimal, binary, hexadecimal, and octal) Done
  4. 5.4The as-if rule and compile-time optimization Done
  5. 5.5Constant expressions Done
  6. 5.6Constexpr variables Done
  7. 5.7Introduction to std::string Done
  8. 5.8Introduction to std::string_view Done
  9. 5.9std::string_view (part 2) Done
Chapter 7 · Scope, Duration, and Linkage Chapter done
  1. 7.1Compound statements (blocks) Done
  2. 7.2User-defined namespaces and the scope resolution operator Done
  3. 7.3Local variables Done
  4. 7.4Introduction to global variables Done
  5. 7.5Variable shadowing (name hiding) Done
  6. 7.6Internal linkage Done
  7. 7.7External linkage and variable forward declarations Done
  8. 7.8Why (non-const) global variables are evil Done
  9. 7.9Inline functions and variables Done
  10. 7.10Sharing global constants across multiple files (using inline variables) Done
  11. 7.11Static local variables Done
  12. 7.12Scope, duration, and linkage summary Done
  13. 7.13Using declarations and using directives Done
  14. 7.14Unnamed and inline namespaces Done
Chapter 9 · Error Detection and Handling4 / 4 done
  1. 9.1Introduction to testing your code Done
  2. 9.2Code coverage Done
  3. 9.4Detecting and handling errors Done
  4. 9.6Assert and static_assert Done
Chapter 10 · Type Conversion, Type Aliases, and Type Deduction Chapter done
  1. 10.1Implicit type conversion Done
  2. 10.2Floating-point and integral promotion Done
  3. 10.3Numeric conversions Done
  4. 10.4Narrowing conversions, list initialization, and constexpr initializers Done
  5. 10.5Arithmetic conversions Done
  6. 10.6Explicit type conversion (casting) and static_cast Done
  7. 10.7Typedefs and type aliases Done
  8. 10.8Type deduction for objects using the auto keyword Done
  9. 10.9Type deduction for functions Done
Chapter 12 · Compound Types: References and Pointers Chapter done
  1. 12.1Introduction to compound data types Done
  2. 12.2Value categories (lvalues and rvalues) Done
  3. 12.3Lvalue references Done
  4. 12.4Lvalue references to const Done
  5. 12.5Pass by lvalue reference Done
  6. 12.6Pass by const lvalue reference Done
  7. 12.7Introduction to pointers Done
  8. 12.8Null pointers Done
  9. 12.9Pointers and const Done
  10. 12.10Pass by address Done
  11. 12.11Pass by address (part 2) Done
  12. 12.12Return by reference and return by address Done
  13. 12.13In and out parameters Done
  14. 12.14Type deduction with pointers, references, and const Done
  15. 12.15std::optional Done
Chapter 14 · Introduction to Classes Chapter done
  1. 14.1Introduction to object-oriented programming Done
  2. 14.2Introduction to classes Done
  3. 14.3Member functions Done
  4. 14.4Const class objects and const member functions Done
  5. 14.5Public and private members and access specifiers Done
  6. 14.6Access functions Done
  7. 14.7Member functions returning references to data members Done
  8. 14.8The benefits of data hiding (encapsulation) Done
  9. 14.9Introduction to constructors Done
  10. 14.10Constructor member initializer lists Done
  11. 14.11Default constructors and default arguments Done
  12. 14.12Delegating constructors Done
  13. 14.13Temporary class objects Done
  14. 14.14Introduction to the copy constructor Done
  15. 14.15Class initialization and copy elision Done
  16. 14.16Converting constructors and the explicit keyword Done
  17. 14.17Constexpr aggregates and classes Done
Chapter 15 · More on Classes1 / 10 done
  1. 15.1The hidden “this” pointer and member function chaining Done
  2. 15.2Classes and header files
  3. 15.3Nested types (member types)
  4. 15.4Introduction to destructors
  5. 15.5Class templates with member functions
  6. 15.6Static member variables
  7. 15.7Static member functions
  8. 15.8Friend non-member functions
  9. 15.9Friend classes and friend member functions
  10. 15.10Ref qualifiers
Chapter 16 · Dynamic Arrays: std::vector0 / 5 done
  1. 16.1Introduction to containers and arrays
  2. 16.2Introduction to std::vector and list constructors
  3. 16.3std::vector and the unsigned length and subscript problem
  4. 16.4Passing std::vector
  5. 16.5Returning std::vector, and an introduction to move semantics
Chapter 17 · Fixed-Size Arrays: std::array and C-Style Arrays0 / 2 done
  1. 17.1Introduction to std::array
  2. 17.2std::array length and indexing
Chapter 18 · Iterators and Algorithms0 / 4 done
  1. 18.1Sorting an array using selection sort
  2. 18.2Introduction to iterators
  3. 18.3Introduction to standard library algorithms
  4. 18.4Timing your code
Chapter 19 · Dynamic Allocation0 / 1 done
  1. 19.1Dynamic memory allocation with new and delete
Chapter 20 · Functions0 / 3 done
  1. 20.1Function pointers
  2. 20.6Introduction to lambdas (anonymous functions)
  3. 20.7Lambda captures
Chapter 21 · Operator Overloading1 / 1 done
  1. 21.13Shallow vs. deep copying Done
Chapter 22 · Move Semantics and Smart Pointers0 / 1 done
  1. 22.1Introduction to smart pointers and move semantics
Chapter 23 · Object relationships2 / 2 done
  1. 23.1Object relationships Done
  2. 23.2Composition Done
Chapter 24 · Inheritance1 / 1 done
  1. 24.1Introduction to inheritance Done
Chapter 25 · Virtual Functions0 / 2 done
  1. 25.1Pointers and references to the base class of derived objects
  2. 25.2Virtual functions and polymorphism
Chapter 26 · Templates0 / 3 done
  1. 26.1Template classes
  2. 26.2Template non-type parameters
  3. 26.3Function template specialization
Chapter 27 · Exceptions3 / 3 done
  1. 27.1The need for exceptions Done
  2. 27.2Basic exception handling Done
  3. 27.3Exceptions, functions, and stack unwinding Done