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.
Lessons
130 lessonsLearning progress100 / 130 done
77%
Chapter 1 · C++ basics Chapter done
Chapter 2 · Functions and files Chapter done
- 2.1Introduction to functions Done
- 2.2Function return values (value-returning functions) Done
- 2.3Void functions (non-value returning functions) Done
- 2.4Introduction to function parameters and arguments Done
- 2.5Introduction to local scope Done
- 2.7Forward declarations and definitions Done
- 2.9Naming collisions and an introduction to namespaces Done
- 2.10Introduction to the preprocessor Done
- 2.11Header files Done
- 2.12Header guards Done
Chapter 4 · Fundamental data types Chapter done
- 4.1Introduction to fundamental data types Done
- 4.2Void Done
- 4.3Object sizes and the sizeof operator Done
- 4.4Signed integers Done
- 4.5Unsigned integers, and why to avoid them Done
- 4.6Fixed-width integers and size_t Done
- 4.7Introduction to scientific notation Done
- 4.8Floating point numbers Done
- 4.9Boolean values Done
- 4.11Chars Done
- 4.12Introduction to type conversion and static_cast Done
Chapter 5 · Constants and Strings Chapter done
- 5.1Constant variables (named constants) Done
- 5.2Literals Done
- 5.3Numeral systems (decimal, binary, hexadecimal, and octal) Done
- 5.4The as-if rule and compile-time optimization Done
- 5.5Constant expressions Done
- 5.6Constexpr variables Done
- 5.7Introduction to std::string Done
- 5.8Introduction to std::string_view Done
- 5.9std::string_view (part 2) Done
Chapter 7 · Scope, Duration, and Linkage Chapter done
- 7.1Compound statements (blocks) Done
- 7.2User-defined namespaces and the scope resolution operator Done
- 7.3Local variables Done
- 7.4Introduction to global variables Done
- 7.5Variable shadowing (name hiding) Done
- 7.6Internal linkage Done
- 7.7External linkage and variable forward declarations Done
- 7.8Why (non-const) global variables are evil Done
- 7.9Inline functions and variables Done
- 7.10Sharing global constants across multiple files (using inline variables) Done
- 7.11Static local variables Done
- 7.12Scope, duration, and linkage summary Done
- 7.13Using declarations and using directives Done
- 7.14Unnamed and inline namespaces Done
Chapter 9 · Error Detection and Handling4 / 4 done
Chapter 10 · Type Conversion, Type Aliases, and Type Deduction Chapter done
- 10.1Implicit type conversion Done
- 10.2Floating-point and integral promotion Done
- 10.3Numeric conversions Done
- 10.4Narrowing conversions, list initialization, and constexpr initializers Done
- 10.5Arithmetic conversions Done
- 10.6Explicit type conversion (casting) and static_cast Done
- 10.7Typedefs and type aliases Done
- 10.8Type deduction for objects using the auto keyword Done
- 10.9Type deduction for functions Done
Chapter 12 · Compound Types: References and Pointers Chapter done
- 12.1Introduction to compound data types Done
- 12.2Value categories (lvalues and rvalues) Done
- 12.3Lvalue references Done
- 12.4Lvalue references to const Done
- 12.5Pass by lvalue reference Done
- 12.6Pass by const lvalue reference Done
- 12.7Introduction to pointers Done
- 12.8Null pointers Done
- 12.9Pointers and const Done
- 12.10Pass by address Done
- 12.11Pass by address (part 2) Done
- 12.12Return by reference and return by address Done
- 12.13In and out parameters Done
- 12.14Type deduction with pointers, references, and const Done
- 12.15std::optional Done
Chapter 14 · Introduction to Classes Chapter done
- 14.1Introduction to object-oriented programming Done
- 14.2Introduction to classes Done
- 14.3Member functions Done
- 14.4Const class objects and const member functions Done
- 14.5Public and private members and access specifiers Done
- 14.6Access functions Done
- 14.7Member functions returning references to data members Done
- 14.8The benefits of data hiding (encapsulation) Done
- 14.9Introduction to constructors Done
- 14.10Constructor member initializer lists Done
- 14.11Default constructors and default arguments Done
- 14.12Delegating constructors Done
- 14.13Temporary class objects Done
- 14.14Introduction to the copy constructor Done
- 14.15Class initialization and copy elision Done
- 14.16Converting constructors and the explicit keyword Done
- 14.17Constexpr aggregates and classes Done
Chapter 15 · More on Classes1 / 10 done
- 15.1The hidden “this” pointer and member function chaining Done
- 15.2Classes and header files
- 15.3Nested types (member types)
- 15.4Introduction to destructors
- 15.5Class templates with member functions
- 15.6Static member variables
- 15.7Static member functions
- 15.8Friend non-member functions
- 15.9Friend classes and friend member functions
- 15.10Ref qualifiers