How to Learn C++ From Scratch
The complete beginner's path through C++. Each guide builds on the last — follow them in order and you'll go from zero to writing real programs with confidence.
Free: The 10 Mistakes Every C++ Beginner Makes
A free 1-page checklist that shows you the exact traps that slow down every C++ beginner — so you can avoid them from day one.
🔒 No spam. Unsubscribe anytime.
Stage 1: Getting Started
Install a compiler, write your first program, and understand what C++ is actually used for.
- 1 What Is C++ Used For? Practical Applications Explained
Understand why C++ matters — where it's used in the real world before you write a single line.
- 2 How to Start Learning C++: A Beginner's Setup Guide
Install a compiler, pick an IDE, and get your environment ready to code.
- 3 C++ Hello World Explained Line by Line
Your first program — every line explained so nothing is mysterious.
- 4 C++ Learning Roadmap: What to Learn and In What Order
The full picture — a structured path from beginner to advanced topics.
- 5 C++ endl vs \n: Difference and Which to Use
When to use std::endl versus the \n character, and why endl can slow down loops.
- 6 C++ getline: Read a Full Line of Input With Spaces
Read strings with spaces and fix the classic getline-after-cin empty-input bug.
- 7 C++ Comments: Single-Line, Multi-Line, and When to Use Them
Write notes in your code with // and /* */ — and learn when a comment helps versus when clearer code is better.
Stage 2: Core Language Fundamentals
The building blocks every C++ program uses — master these before anything else.
- 5 C++ Variables and Data Types: A Complete Beginner's Guide
int, double, char, string, bool — the types you'll use in every program.
- 6 C++ User Input with cin: Reading from the Keyboard
Make your programs interactive — cin, getline, and handling different input types.
- 7 C++ Conditionals Tutorial: if, else, and switch Explained
Make your program make decisions — if/else, else-if chains, switch, and the ternary operator.
- 8 C++ Enum Tutorial: Named Constants and enum class Explained
Replace magic numbers with readable named values — enum, enum class, and when to use each.
- 9 C++ Loops Tutorial: for, while, and do-while Explained
Repeat code efficiently — for loops, while loops, break, continue, and the range-based for loop.
- 10 C++ Functions Tutorial: How to Write and Use Functions
Organise code into reusable blocks — parameters, return types, overloading, and scope.
- 11 C++ Recursion Tutorial: How Recursive Functions Work
Functions that call themselves — base cases, the call stack, factorial, Fibonacci, and binary search.
- 12 C++ Arrays Tutorial: Store and Access Multiple Values
Fixed-size collections — declaration, initialization, iteration, and multi-dimensional arrays.
- 13 C++ Error Messages Explained: What They Mean and How to Fix Them
Decode the compiler — undeclared identifier, undefined reference, no matching function, and more.
- 14 C++ 2D Arrays: How to Declare, Initialize, and Iterate
Grids, matrices, and tables — declare, initialize, iterate, and pass 2D arrays to functions.
- 15 C++ Scope Resolution Operator (::) Explained for Beginners
Understand what :: means — namespaces, class methods, static members, and why you write std::cout.
- 16 C++ Function Overloading: Same Name, Different Parameters Explained
Define multiple functions with the same name — the compiler picks the right one based on the arguments you pass.
- 17 C++ Default Arguments: How to Give Function Parameters Default Values
Make function parameters optional with fallback values — cleaner APIs with less repetition.
- 18 C++ Bitwise Operators Explained: AND, OR, XOR, Shift, and NOT
Manipulate integers at the bit level — &, |, ^, ~, <<, >> with practical examples and flag patterns.
- 19 How to Return Multiple Values from a C++ Function: 5 Practical Methods
Structs, pairs, tuples, and output parameters — every clean way to get more than one value back from a function.
- 20 C++ Fibonacci Program: Iterative, Recursive, and Memoized Approaches
Implement the Fibonacci sequence three ways — practice loops, recursion, and dynamic programming in one exercise.
- 21 How to Swap Two Numbers in C++: 4 Methods
Temp variable, std::swap, references, and the no-temp trick — with trade-offs.
- 22 C++ Prime Number Program: Check and Print Primes
Check if a number is prime and print primes up to n with the square root method.
- 23 C++ Factorial Program: Loop and Recursion Methods
Compute factorials two ways, compare loop vs recursion, and avoid integer overflow.
- 24 C++ Palindrome Program: Strings and Numbers
Two-pointer string checks and digit-reversal number checks, with common pitfalls.
- 25 C++ Enum to String: Convert Enums to Text (3 Ways)
Map enum values to readable strings with a switch, an array, or a std::map.
- 26 C++ Multidimensional Array: 2D and 3D Arrays Explained
Declare, initialize, and loop over 2D and 3D arrays, and pass them to functions.
- 27 C++ const Keyword Explained: Variables, References, and Functions
Lock values so they can't change — const variables, const references, and const member functions explained.
- 28 How to Reverse a String in C++: 4 Simple Methods Explained
std::reverse, a backward loop, two pointers, and recursion — four ways to reverse a string and what each teaches you.
- 29 C++ Modulo Operator (%): Remainders and Divisibility Explained
The % operator, even/odd checks, the integer-only rule, and wrap-around tricks.
- 30 C++ break and continue: Control the Flow of Your Loops
Exit a loop early or skip a single iteration — with nested-loop and switch gotchas.
- 31 C++ Even or Odd Program: Check Any Number Three Ways
A first real program — modulo, user input with cin, and a one-line ternary version.
- 32 FizzBuzz in C++: The Classic Beginner Problem Step by Step
Print 1 to 100 with Fizz, Buzz, and FizzBuzz using a loop, the modulo operator, and ordered if-else logic.
- 33 C++ Nested Loops: Patterns, Grids, and the Multiplication Table
Use an outer and inner loop to print star patterns, a times table, and row-and-column grids.
- 34 How to Find the Size of an Array in C++
Count elements with the sizeof trick or std::size — and see why the length is lost inside a function.
- 35 How to Pass an Array to a Function in C++
Understand pointer decay, why you pass the length, and how a std::vector makes array arguments safer.
- 36 Integer Division in C++: Why 5 / 2 Equals 2
See why dividing two integers drops the decimals, and how a simple cast gives you 2.5 instead of 2.
- 37 C++ Increment and Decrement Operators: ++i vs i++
The real difference between pre- and post-increment, and which one to reach for in your loops.
- 38 The sizeof Operator in C++: Find the Size of Any Type
Measure types and variables in bytes, count array elements, and dodge the pointer-decay trap.
- 39 Multiplication Table Program in C++ (Using Loops)
Build a times table from a single loop up to a full nested-loop grid, with neatly aligned output.
- 40 Star Pattern Programs in C++: Triangles, Pyramids, and Diamonds
Draw triangles, pyramids, and diamonds on the console using nested loops — the skeleton behind every shape.
- 41 Leap Year Program in C++: Check if a Year Is a Leap Year
Turn the divisible-by-4, 100, and 400 rule into one clean condition and a reusable isLeapYear function.
- 42 Reverse a Number in C++: Flip the Digits with a While Loop
Peel digits off with % and / to turn 1234 into 4321, including negatives and overflow-safe code.
- 43 Sum of Digits in C++: Add Up the Digits of a Number
Add a number's digits with a while loop or recursion, then keep going to find its digital root.
- 44 GCD and LCM in C++: The Euclidean Algorithm Explained
Find the greatest common divisor with Euclid's method, derive the LCM, and use C++17's std::gcd.
- 45 C++ cin.ignore(): Fix getline Skipping After cin >>
Why getline gets skipped after cin >>, and how cin.ignore() clears the leftover newline for good.
Want to go deeper, faster?
If you're looking to go deeper with C++, the C++ Better Explained Ebook is perfect for you — whether you're a complete beginner or looking to solidify your understanding. Just $19.
👉 Get the C++ Better Explained Ebook — $19Stage 3: Pointers and Memory
What makes C++ different from every other language — and what makes it powerful.
- 14 How to Use Pointers in C++: A Complete Beginner's Guide
The mental model that makes pointers click — addresses, dereferencing, null pointers, and references.
- 15 Memory Management in C++: Heap vs Stack, new/delete, and Memory Leaks
How the stack and heap work, when to use new/delete, and how to prevent memory leaks.
- 16 Smart Pointers in Modern C++: unique_ptr, shared_ptr, and weak_ptr
The modern replacement for raw pointers — automatic memory management without garbage collection.
- 17 C++ nullptr vs NULL: What's the Difference
Why nullptr is type-safe, the overload bug NULL causes, and when to use each.
Stage 4: Object-Oriented Programming
Model real-world problems with classes, inheritance, and polymorphism.
- 17 C++ Classes and Objects: A Beginner's Guide to OOP
Define your own types — constructors, member variables, methods, and access control.
- 18 OOP in C++: Inheritance, Encapsulation, and Polymorphism Explained
The four pillars of object-oriented programming applied to real C++ code.
- 19 C++ Operator Overloading: A Beginner's Guide
Define what +, ==, <<, and other operators do for your own classes — with practical examples.
- 20 Virtual Functions and Polymorphism in C++ Explained
Runtime polymorphism — how virtual functions and the vtable actually work.
- 21 C++ Copy Constructor: Deep Copy vs Shallow Copy Explained
When the default copy breaks — deep vs shallow copy, the Rule of Three, and safe resource management.
- 22 C++ Constructor Initializer Lists Explained for Beginners
Initialize members efficiently — syntax, why it's faster than body assignment, and when it's required.
- 23 C++ Inheritance Explained: Base Classes, Derived Classes, and How It Works
Reuse and extend existing classes — base and derived classes, access specifiers, and constructor chaining.
- 24 C++ Abstract Classes Explained: Pure Virtual Functions and Interfaces
Define contracts that subclasses must fulfill — pure virtual functions, abstract base classes, and C++ interfaces.
Stage 5: The Standard Library
C++'s built-in containers and algorithms — the tools you'll use in every real project.
- 21 C++ Vector Tutorial: The Complete Guide to std::vector
The most-used container in C++ — dynamic arrays, iteration, sorting, and memory management.
- 22 C++ map and unordered_map Tutorial: Key-Value Storage Explained
Look up values by key in O(log n) or O(1) — when to use each and how to use both.
- 23 C++ String Handling: std::string, string_view, and Performance Tips
Everything about strings — methods, concatenation, searching, and modern string_view.
- 24 C++ int to string Conversion: Every Method Explained
Convert between numbers and strings — to_string, stringstream, stoi, and stod with examples.
- 25 C++ Random Numbers: rand(), srand(), and the Modern <random> Library
Generate random numbers the right way — from rand() basics to the modern mt19937 engine.
- 26 C++ STL Containers Explained: Choosing the Right Container
vector, list, deque, set, map, stack, queue — which to pick and why.
- 27 How to Convert String to int in C++: stoi, atoi, and stringstream
The complement to to_string — safely converting user input and file data back to integers.
- 28 C++ std::set Tutorial: Sorted Unique Collections for Beginners
Automatic deduplication and sorting in one container — insert, find, erase, and iteration.
- 29 C++ std::pair Explained: Store Two Values Together for Beginners
Group any two values without a struct — first, second, make_pair, and how maps use pair internally.
- 30 C++ Queue and Stack Tutorial: FIFO and LIFO Containers Explained
Two fundamental data structures — std::stack for LIFO and std::queue for FIFO with practical examples.
- 31 C++ Math Functions: Using the cmath Library for Beginners
sqrt, pow, abs, floor, ceil, round, and trig functions — everything in one place with working examples.
- 32 C++ Output Formatting with iomanip: setw, setprecision, and More
Print aligned tables and precise decimals — control column width, alignment, fill characters, and number bases.
- 33 C++ 2D Vector: How to Create and Use a Vector of Vectors
Build grids and matrices that resize at runtime — the flexible alternative to fixed 2D arrays.
- 34 C++ std::sort Explained: How to Sort Vectors and Arrays for Beginners
Sort any container in one line — ascending, descending, custom comparators, and sorting objects by field.
- 35 C++ stringstream Tutorial: Parse and Build Strings Like a Pro
Treat strings as streams — convert types, split words, and build formatted output using the sstream header.
- 36 C++ Iterators Explained: How to Traverse STL Containers for Beginners
Master begin(), end(), reverse iterators, and how to erase elements safely — the foundation of STL algorithms.
- 37 C++ Split String: Split by Delimiter (3 Ways)
Split a string by space, by a character, or by a substring with stringstream, getline, and find.
- 38 C++ Read CSV File: Parse Comma-Separated Data
Read a CSV with ifstream and getline, split rows on commas, and convert fields to numbers.
- 39 C++ Check if File Exists: 3 Reliable Ways
Use std::filesystem::exists, an ifstream check, or fopen, with a clear recommendation.
- 40 C++ Remove Element from Vector (and Duplicates)
Remove by index or value with the erase-remove idiom, and remove duplicates cleanly.
- 41 C++ Sort Vector of Structs: By Field with std::sort
Sort by any field with a lambda comparator: ascending, descending, or by multiple keys.
- 42 C++ Check if String Contains Substring
Test for a substring with find() and npos, the C++23 contains() method, and case-insensitively.
- 43 C++ Pass Vector to Function: Reference vs Value
Pass by value, by reference, or by const reference, and know which to use and why.
- 44 How to Compare Strings in C++: ==, compare(), and strcmp Explained
Compare std::string with ==, use compare() for three-way results, and avoid the C-string == trap.
- 45 C++ Number Guessing Game: A Complete Beginner Project Step by Step
Build a complete guessing game — random numbers, loops, input validation, and a replay option in one project.
- 46 C++ char to int Conversion: The Right Way (and the Trap)
The ch - '0' trick, static_cast for ASCII codes, and stoi for whole-number strings.
- 47 How to Print a Vector in C++: 4 Clean Methods
Range-based for, index loops, iterators, and a reusable template that prints any vector.
- 48 How to Find an Element in a Vector in C++ (std::find)
Check if a value exists, get its index, and use find_if with a lambda for conditions.
- 49 C++ Exponents: Why ^ Isn't Power and How to Use pow()
C++ has no power operator — use pow() from cmath, avoid precision traps, do integer powers safely.
- 50 C++ Uppercase and Lowercase: Convert a String's Case
Change a string to upper or lower case with std::transform, toupper, and tolower — plus the pitfalls to avoid.
- 51 C++ substr(): How to Get a Substring
Slice a piece out of a string with substr(), grab the rest after a position, and avoid out_of_range.
- 52 Sum of Array Elements in C++: Loops and std::accumulate
Add up an array or vector three ways, and avoid the trap that silently drops decimals.
- 53 Find the Maximum and Minimum in C++ (max, min, max_element)
Use std::max, std::min, and std::max_element to find extremes in two numbers or a whole container.
- 54 std::array in C++: A Safer, Modern Alternative to C-Style Arrays
A fixed-size container that knows its own length — safer than a C array, lighter than a vector.
Stage 6: Modern C++ Features
C++11 and beyond — the features that make modern C++ fast, safe, and expressive.
- 27 C++ Lambda Functions Explained: Closures, Captures, and std::function
Inline anonymous functions — syntax, capture lists, using lambdas with STL algorithms.
- 28 C++ Move Semantics Explained: rvalue References, std::move, and Performance
Transfer ownership instead of copying — one of the biggest performance wins in modern C++.
- 29 C++ Templates Explained: Write Code That Works with Any Type
Generic programming — write a function or class once, use it with any type.
- 30 Exception Handling in C++: try, catch, and throw Explained
Handle errors gracefully — exceptions, custom exception classes, and RAII.
- 31 C++ Concurrency Tutorial: Threads, Mutex, and Thread Safety Explained
Write programs that run on multiple CPU cores — std::thread, mutex, lock_guard, and atomics.
- 32 C++ auto Keyword Explained: Type Deduction for Beginners
Let the compiler deduce your types — when and how to use auto cleanly in modern C++.
- 33 C++ Type Casting Explained: static_cast, dynamic_cast, and reinterpret_cast Explained
Use the right cast for the job — static_cast, dynamic_cast, const_cast, and reinterpret_cast explained with examples.
- 34 C++ Range-Based For Loop: The Modern Way to Loop
Cleaner iteration over containers with auto and references, plus its limitations.
- 35 C++ Measure Execution Time with std::chrono
Time code in milliseconds or microseconds and build a reusable timer with std::chrono.
- 36 typedef vs using in C++: Type Aliases Explained
Give long types a short name, and see why modern C++ prefers using — including alias templates.