About
Info
Please keep in mind that this course is still a work in progress. If you notice anything incorrect, confusing, or missing, feel free to open an issue on GitHub: https://github.com/CL0001/learn-cplusplus/issues
Welcome! This course is my attempt to share useful knowledge about C++.
I created this course because C++ was the first programming language I learned in school, but unfortunately, it was taught in a way that made it seem terrible. We were using a very old version of C++, and the teaching style felt like, "This is how it's always been done, so this is how we'll keep doing it." It was essentially the old "C with Classes" style of programming — the way C++ was first introduced — and almost everyone hated it. I didn’t understand much, and I certainly didn’t learn enough to feel confident with the language; I was completely lost.
Disappointed, I switched to Python because I heard it was easier to learn and more versatile. I started learning programming on my own, combining the little I grasped from school with online tutorials and personal projects. Eventually, I became more interested in systems programming, especially game development and building my own game engines. That's when I realized I needed to return to C++. Unreal Engine, my engine of choice, relies heavily on C++ for writing game logic, whereas engines like Unity are built on C++ but use other languages, such as C#, for that purpose. Furthermore, it highlights the limitations of the Blueprint system, which, regrettably, is not a 'jack-of-all-trades' for every task. Low-level control is essential for performance and flexibility, something Python and similar languages didn't offer. I could have used Unity for that purpose, but I was genuinely interested in gathering knowledge and building game engine myself, and that's where C++ truly shines.
When I returned to C++, I found it wasn't the messy, outdated language I'd remembered. Modern C++ boasts powerful, well-designed features and can actually be enjoyable. Yet, this understanding only came after many frustrating hours of self-study. As someone who had only used high-level languages like Python, even fundamental low-level concepts felt entirely new to me. My goal was to truly understand how computers work "under the hood," rather than just depending on libraries for everything.
After struggling with confusing resources and piecing together knowledge over the years, I realized that maybe others were going through the same thing. That's why I decided to write this course: a "wannabe professional but friendly" guide for beginners. It starts with the fundamentals and goes all the way through to building a complete game without a pre-built engine.
I hope anyone reading this finds the journey enjoyable and learns something new along the way.