Skip to content

About

Info

This book is a living document. It will continue to evolve as I refine explanations, add examples, and correct mistakes. If you notice anything confusing, incorrect, or missing, please consider opening an issue on GitHub so I can improve it for everyone.

Direct link: https://github.com/CL0001/learn-cplusplus/issues

Why I Wrote This Book

I created this book because C++ was the first programming language I—and many others—learned in school, but unfortunately it was taught in a way that made it seem terrible. We were using a very old version of the language, and the teaching style leaned heavily on the old “C with Classes” approach—the way C++ was originally introduced—which almost everyone hated. I didn’t understand much at the time, and I certainly didn’t learn enough to feel confident with the language; I just felt completely lost.

Disappointed, I switched to other languages and began teaching myself programming, combining what little I had grasped from school with online tutorials and personal projects. Over time, I grew more interested in systems programming—especially game development and the idea of building my own game engines. That interest eventually led me back to C++.

Why C++ Matters

Unreal Engine, my preferred choice, relies heavily on C++ for writing game logic, unlike engines such as Unity, which are built in C++ but expose C# for scripting. This also exposed the limitations of Unreal’s Blueprint system, which, while useful, is far from a “jack-of-all-trades.” For serious performance and flexibility, low-level control is essential—something languages like Python simply don’t provide.

I could have chosen Unity and worked within its ecosystem, but my real interest was in understanding how things work under the hood and building my own engine. That pursuit is where C++ truly shines.

What You’ll Find Here

When I came back to C++, I discovered it wasn’t the messy, outdated language I had remembered. Modern C++ offers powerful, thoughtfully designed features—and it can actually be enjoyable to use. Still, reaching that realization only happened after many frustrating hours of self-study. Coming from high-level languages like Python, even basic low-level concepts felt completely new. My real goal was to understand how computers work “under the hood” rather than just relying on libraries for everything.

After years of struggling with scattered resources and slowly piecing things together, I realized others might be facing the same challenges. That’s why I decided to write this book: a guide that aims to be professional yet friendly, designed for beginners. It starts with the fundamentals and builds all the way up to creating a complete game from scratch—without a pre-built engine.

My hope is that anyone reading this finds the journey both enjoyable and enlightening, and comes away with a deeper confidence in C++.