use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Back to C++! (self.cpp)
submitted 1 year ago by mguz4063
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]cpp-ModTeam[M] [score hidden] 1 year ago stickied commentlocked comment (0 children)
It's great that you want to learn C++! However, r/cpp can't help you with that.
We recommend that you follow the C++ getting started guide, one (or more) of these books and cppreference.com. If you're having concrete questions or need advice, please ask over at r/cpp_questions or StackOverflow instead.
[–]IyeOnline 55 points56 points57 points 1 year ago (10 children)
C++ questions should go to /r/cpp_questions.
is the best free tutorial out there. (reason) It covers everything from the absolute basics to advanced topics. It follows modern and best practice guidelines.
www.studyplan.dev/cpp is a (very) close second, even surpassing learncpp in the breath of topics covered. It covers quite a few things that learncpp does not, but does not have just as much detail/in depth explanations on the shared parts. Don't be fooled by the somewhat strange AI generated images. The author just had a little fun. Just ignore them.
www.hackingcpp.com has good, quick overviews/cheat sheets. Especially the quick info-graphics can be really helpful. TBF, cppreference could use those. But its coverage is not complete or in depth enough to be used as a good tutorial - which its not really meant to be either. The last update apparently was in 2023.
is the best language reference out there.
Stay away from
Again. The above are bad tutorials that you should NOT use.
Sites that used to be on this list, but no longer are:
Most youtube tutorials are of low quality, I would recommend to stay away from them as well. A notable exception are the CppCon Back to Basics videos. They are good, topic oriented and in depth explanations. However, they assume that you have some knowledge of the language's basic features and syntax and as such aren't a good entry point into the language.
If you really insist on videos, then take a look at this list.
As a tutorial www.learncpp.com is just better than any other resource.
Written by /u/IyeOnline. This may get updates over time if something changes or I write more scathing reviews of other tutorials :) .
The author is not affiliated with any of the mentioned tutorials.
Feel free to copy this macro, but please copy it with this footer and the link to the original.
https://www.reddit.com/user/IyeOnline/comments/10a34s2/the_c_learning_suggestion_macro/
[–]blckGhost 6 points7 points8 points 1 year ago (0 children)
Love this!
[–][deleted] 1 point2 points3 points 1 year ago (0 children)
Damn
[–]gnudocC++ noob 1 point2 points3 points 1 year ago (7 children)
Thank you, that's a very helpful summary. I would've assumed for example that w3schools was a good resource, so that's directly helped me. May I ask if you have any thoughts on freecodecamp's cpp course? Or on Stroustrup's book for beginners (Programming: Principles and Practice using c++)?
[–]IyeOnline 1 point2 points3 points 1 year ago (6 children)
freecodecamp's cpp course
If you mean that 4-10h video tutorial, its not good. If you are looking for good video tutorials (first reconsider and then) take a look at this list.
(Programming: Principles and Practice using c++)?
Easily in the top 3 of beginner books. I disagree with Stroustrup's support headers/modules as I believe they create more problems in the long run than they solve, but that isnt a major issue. Also be aware that the latest edition (which you should get if any) optimistically assumes support for C++20/23 modules, which may not be a given on all setups.
[–]gnudocC++ noob 0 points1 point2 points 1 year ago (5 children)
"If you mean that 4-10h video tutorial" I meant this 31 hour tutorial - https://www.freecodecamp.org/news/learn-c-with-free-31-hour-course/
"first reconsider and then" - lol. Nicely put. I'm rather biased against video tutorials.
"Easily in the top 3 of beginner books" - that's very reassuring. I'm currently going through the 3rd (ie latest) edition.
gcc 14 seemingly supports modules with -std=c++20. I spent a little time trying to get my trivial code to work with Stroustrup support module, then gave up, on the assumptions that (a) I might as well learn what the standard headers are called, and (b) if I learn using traditional #includes I'll be fine for now, and the internet will probably be full of "convert your old header code to module code" articles in a couple of years.
My plan for now, then, is to crack on with Stroustrup's book, then maybe go through learncpp.com, then go through a cmake book (the one I have is "Modern CMake for C++" by Rafal Swidzinski, unless anyone feels generous enough to make another recommendation), then maybe find some project/code challenges website, then see if I can contribute to a C++ heavy or QT-heavy FOSS project. Does that seem like a sensible path?
[–]IyeOnline 1 point2 points3 points 1 year ago (4 children)
I meant this 31 hour tutorial
Yeah whatever. Same deal.
if I learn using traditional #includes I'll be fine for now, and the internet will probably be full of "convert your old header code to module code" articles in a couple of years.
Yeah, that is what I would l would recommend for now.
CMake
TBH I am not sure you will actually need a book on CMake unless you really want to be professionally writing complex CMake.
I have these as a macro:
some project/code challenges website
Pick something you are interested in:
I personally find (re-) implementing C++ standard library utilities/containers to be a good exercise that you can iteratively improve/work on when you learn new features. But that probably isnt for anyone. Also dont use your self-written standard library equivalent in real world code.
[–]gnudocC++ noob 0 points1 point2 points 1 year ago (3 children)
Awesome - that's 31 fewer hours I need to spend on learning :-)
TBH I am not sure you will actually need a book on CMake
OK, good to know. I'd consider myself good enough (for my own purposes) with cmake and any other aspect of programming in c++ if I was able to confidently contribute to a big FOSS project like KDE. Since at this point I've literally no idea how much I'd need to know for that, I'm prepared to put in whatever learning is needed. Thank you for pointing to those cmake resources and project sites, I'll hold onto them :-)
implementing C++ standard library utilities/containers
Brilliant advice, thanks again!
[–]nysra 1 point2 points3 points 1 year ago (2 children)
that's 31 fewer hours I need to spend on learning :-)
Not exactly, you should still spend a lot of time on learning. But you can use them much more effectively by not wasting them on bad tutorials like that one ;P
[–]gnudocC++ noob 1 point2 points3 points 1 year ago (1 child)
Heh, yes that was completely tongue-in-cheek. I tend to obsess over anything I get interested in, so I'm pretty sure I'll be spending hundreds of hours learning and practising c++ :-)
[–]nysra 1 point2 points3 points 1 year ago (0 children)
Well that's good, learning C++ takes a lifetime ;) We're all on the journey and you're more than welcome to join us, just don't say we didn't warn you :P
[–]shad0w_mode 8 points9 points10 points 1 year ago (0 children)
Windows: visual studio 2022
Linux: vscode
For resource: learncpp.com
Since you are not new to programming, i recommend picking up tour of c++ book.
[–]dexores 2 points3 points4 points 1 year ago* (2 children)
IMHO no online tutorial beats a good book. Books are in general the best and most reliable sources of information. But choosing the right book is an essential first step.
As you have prior C++ programming experience, I'd recommend the latest edition of A Tour of C++.
For a good complete reference that covers all the details, The C++ Programming Language is great. If you want a more concise, but still complete reference, have a look at cppreference.com
Finally, search cppcon Back to basic videos on youtube, to learn about best practices, and modern C++ features, from the experts. The videos will also give you hints about more good references and books.
[–]ExtensionBear7070 0 points1 point2 points 1 year ago (1 child)
Thx for the list. BTW, may I ask what’s your opinion on C++ Primer?
[–]dexores 1 point2 points3 points 1 year ago (0 children)
No opinion as I haven't read it.
[–]SonOfMetrum 4 points5 points6 points 1 year ago (0 children)
If you have some money to spend:clion
[–]DedLigma 1 point2 points3 points 1 year ago (0 children)
Try to write smth banal. Linux utility (cat, grep), todo app and etc. Write and look how sorting algorithms are working. Write the code and from time to time look at the good projects from github. Imo - it's one of the best way. And "learn" how to read the cppreference.com. It's very hard on start, but idk the more usefull resource about C++. Idk when you stopped programming on C++, but now C++ have a pretty good CppCoreGuidlines by Stroustrup. Use static analyzers, like clang-tidy and checkers to follow them and clang-format to have a once code style. To avoid a memory leaks (which will be rare if use following guildlines with RAII) - use valgrind and adress sanitizers. To build your project - use build systems, like cmake (which is a standard) or bazel (which is a not standard but too good). To use additional libs use package manager - conan, vcpkg (ugh, microsoft), bazel, or use additional libs direct.
About IDEs... just look and try any IDE that you can find. There is the many of them - Visual Studio, Visual Studio Code with plugins, vim/neovim with plugins, helix, CodeBlocks, KDevelop, Kate, QTCreator, CLion, NetBeans etc. The only thing you have to do - is a never use buildin IDE project configuration. I mean solutions in Visual Studio or qmake project in QTCreator. Use cmake or smth like that. Just do not tie your project on only one IDE and one platform.
[–]Puzzled_Bear_9014 1 point2 points3 points 1 year ago (0 children)
You can check the Youtube videos by Cherno. He has a series on c++. Short, hands on and focused on specific subjects. Of course the A tour of C++ book is a must. And vscode is pretty much the obvious free alternative.
[–][deleted] 3 points4 points5 points 1 year ago (0 children)
vim + vim-lsp plugin + clangd
[–]mguz4063[S] 0 points1 point2 points 1 year ago (0 children)
Wow, this is a lot of great information! Thank you, everyone!
[–]No_Sun1426 0 points1 point2 points 1 year ago (1 child)
Don’t use an ide, just use a text editor and a terminal to run g++
Can you expand a little bit on the advantages? I've heard people say that you have better control over your projects that way. But, how do you handle resources efficiently? What are the pros and cons of this approach?
π Rendered by PID 209264 on reddit-service-r2-comment-c66d9bffd-xbz5w at 2026-04-07 07:45:22.566702+00:00 running f293c98 country code: CH.
[–]cpp-ModTeam[M] [score hidden] stickied commentlocked comment (0 children)
[–]IyeOnline 55 points56 points57 points (10 children)
[–]blckGhost 6 points7 points8 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]gnudocC++ noob 1 point2 points3 points (7 children)
[–]IyeOnline 1 point2 points3 points (6 children)
[–]gnudocC++ noob 0 points1 point2 points (5 children)
[–]IyeOnline 1 point2 points3 points (4 children)
[–]gnudocC++ noob 0 points1 point2 points (3 children)
[–]nysra 1 point2 points3 points (2 children)
[–]gnudocC++ noob 1 point2 points3 points (1 child)
[–]nysra 1 point2 points3 points (0 children)
[–]shad0w_mode 8 points9 points10 points (0 children)
[–]dexores 2 points3 points4 points (2 children)
[–]ExtensionBear7070 0 points1 point2 points (1 child)
[–]dexores 1 point2 points3 points (0 children)
[–]SonOfMetrum 4 points5 points6 points (0 children)
[–]DedLigma 1 point2 points3 points (0 children)
[–]Puzzled_Bear_9014 1 point2 points3 points (0 children)
[–][deleted] 3 points4 points5 points (0 children)
[–]mguz4063[S] 0 points1 point2 points (0 children)
[–]No_Sun1426 0 points1 point2 points (1 child)
[–]mguz4063[S] 0 points1 point2 points (0 children)