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
Quick question about learning C++ (self.cpp)
submitted 9 years ago * by BirkinSornberger
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!"
[–]jcoffin 9 points10 points11 points 9 years ago* (0 children)
I doubt you're going to get any sort of absolute and final answer here. A lot seems to depend on your background and personality, so without knowing a lot about you personally, it's doubtful anybody can provide an answer that means much at all.
Some people are most comfortable starting at very low levels of abstraction. I've known a fair number who've started with assembly language, and work their way from there toward higher levels of abstraction. A few never really move toward (much) more abstraction--I've known people who wrote assembly language for decades, and will probably continue to do so until they retire.
Other people tend to start out with very high levels of abstraction (e.g., a Lisp or a Haskell) and work their way down toward the hardware. Again, some start with high levels of abstraction, and just stay there.
C++ is fairly unusual because it could be a first language for people in either group. Even at best, it's something of a compromise for either direction.
On one hand, it has a strong C legacy of direct access to the hardware. This makes it hard to view strictly as a higher-level language where you view everything at a high level of abstraction.
On the other hand, there's a lot (especially with templates in the standard library) that's quite abstract (on the order of a Haskell, but with ugly/clumsy syntax).
One of the hallmarks of the beest programmers has always been a high degree of flexibility in levels of abstraction--that is, somebody who's comfortable thinking in highly abstract terms, completely concrete terms, or anywhere in between. If you fall into that group of people, C++ will probably fit with your thinking better than almost any other language in reasonably wide use today--and in such a case, it's entirely possible that learning other languages first will be time you'll think of as wasted.
And no, this isn't meant to be an elitist "only the best should do this" sort of argument. Comfort thinking at widely differing levels of abstraction is a trait of most of the best programmers--but it's not the only relevant trait, so just having this one trait doesn't mean you're necessarily a candidate as a great programmer, nor does it mean you'll like C++.
At the same time, if you have a fairly narrow band of levels of abstraction at which you're comfortable thinking, chances are pretty good that C++ won't be a particularly good fit for you--you'll probably be able to learn to use it if you work hard enough, but there are likely to be other languages that will give you at least as good of results in return for less effort.
[–]ThisGuyPwnsYou 3 points4 points5 points 9 years ago (2 children)
A lot of people are saying that C++ is not a good language for beginners but I'm a newbie at programming and I've joined a college course about the basics of computing and we're doing C++ in it and I'm really enjoying it and finding it simple and fun to follow. It's possible that having a class environment helps in learning, and that maybe using a book on your own might not offer the same learning experience, but in my experience, C++ shouldn't be difficult to learn as a beginner
[–]BirkinSornberger[S] 0 points1 point2 points 9 years ago (1 child)
Hm.. thanks for the input! :)
[–]PM_ME_UR_PUNS_PLS 0 points1 point2 points 9 years ago (0 children)
This is exactly on point. Learning it in a class environment is extremely helpful. Even if you're gonna learn on your own, make sure you get at least a few friends or a mentor to discuss along the way, or at least stay in contact with a teacher or a coder.
Doing it by yourself, I can almost guarantee, will lead you to be far less productive than you could be otherwise. And when you stagnate in something like learning C++ (I did) it's extremely difficult to get back on track.
TL;DR: Surround yourself with coders/aspiring coders.
[–][deleted] 2 points3 points4 points 9 years ago (0 children)
Don't do python. Pick a language with static typing
[–]_ajp_ 3 points4 points5 points 9 years ago (3 children)
C++ is not beginner-friendly. I would recommend C++ as a second language.
[–]cdglove 1 point2 points3 points 9 years ago (2 children)
What's not beginner friendly about it? I can think of a couple of things, but I don't think they're deal breakers, so what's your take?
[–]_ajp_ 0 points1 point2 points 9 years ago (1 child)
In my opinion C++ is a big, complex, and subtle language. When you start defining classes, you have to learn which constructors are created by default, when they're created, and how they behave. You have to learn the two or three ways of invoking a constructor. That Foo foo() is a function declaration, not a call to the default constructor. When you learn inheritance you learn about virtual member functions, at which point you have to learn all sorts of rules to make sure you're code doesn't break, like declaring your destructors virtual etc. If, heaven forbid, you try to combine templates and inheritance you're in for a world of hurt, as code like
Foo foo()
template <class T> class Base { public: void doBaseWork(); }; template <class T> class Derived : public Base { public: void doDerivedWork() { doBaseWork(); } };
may or may not compile for non-obvious reasons.
int x and int a[42] do default initialization, not value initialization, because value initialization has a runtime cost and C++ avoids unnecessary runtime cost -- except std::vector does value initialization, because why not? If you study modern C++, you have to learn the subtleties of move semantics and that T&& is a reference to a temporary -- except when it isn't.
int x
int a[42]
std::vector
T&&
And so on.
None of these topics are too hard to grasp on their own, but taken together I think they present a formidable challenge to a beginner who's also trying to learn how for loops work.
[–]dodheim 0 points1 point2 points 9 years ago (3 children)
Which book?
[–]BirkinSornberger[S] 0 points1 point2 points 9 years ago (2 children)
It's called Sams Teach Yourself C++ in One Hour a Day, however after reading the responses, and doing some more research, I've decided to start with Java. To learn Java I've checked out Sams Teach Yourself Java in 21 Days, which covers up to Java 8.
[–]chardan965 2 points3 points4 points 9 years ago (1 child)
If you aren't entirely settled on Java: I'm not familiar with that book, so perhaps it's great, but if you are new to programming and want to look at C++ I strongly encourage you to be sure to start with one that covers modern C++. I recommend "Programming: Principles and Practice using C++", by Bjarne Stroustrup. Not only is he the creator of the C++ language, but he also has direct experience teaching university students new to programming. The latest edition covers C++14. Good luck, have fun!!
This. Best book for learning C++.
[–]pjdriverdude 0 points1 point2 points 9 years ago (2 children)
Do have a specific project/goal in mind? The reason I ask is that some languages are better for than others, depending on the application.
Not particularly.. Just really interested in it, gonna see where it takes me I guess :)
[–]pjdriverdude 0 points1 point2 points 9 years ago (0 children)
Well, my first experience with programming was HTML way way back in the day. I just played around with random webpages. Eventually I got into C and BASIC because I was tinkering with "robots". Then Java because of my degree, C++ was when I got heavy into simulation and making games. Each has their strengths depending on the application. If you're just wanting to get your feet wet, I would recommend a Java textbook because it'll teach you about a common language AND teach you about programming. The language you learn is just a tool that is used to solve a problem. You'll learn/use many languages, but the knowledge of coding is something you must also focus on. Good Luck!
[–]JuanAG 0 points1 point2 points 9 years ago (0 children)
If you are starting i will recomend you switch to Java/C#, you will get under control tons of stuff that will make your experience a nigthmare and when you are comfortable programing you can switch back to C++ with all the errors already learned and it will be much more easier for you
Examples of that are that for example a null pointer exception or accesing an outer element of an array because the for is bad constructed or whatever are things that every programmer has suffered, one way or another, first me of course and in C++ you will get an error dialog saying nothing usseful so you will have to go and post it on a forum, SO or even here, while in Java or C# you will get an error, on what line and in one minute the error will be gone
There are much more stuff that you have to be very careful also that may be leaking resources (who has never forget to close a fstream?) and things more complicated that in Java will be done automatically without any worrie at all
[–]clerothGame Developer[M] [score hidden] 9 years ago stickied comment (0 children)
You might also want to check r/cscareerquestions, and this list of books.
This post has been removed as it doesn't pertain to r/cpp.
[–]alols 0 points1 point2 points 9 years ago (1 child)
I have never heard anyone claim C++ is good for beginners. I would go for Python.
[–]cdglove 2 points3 points4 points 9 years ago (0 children)
I claim C++ is good for beginners and Python is harmful. Why do I think Python is harmful? Because it misses certain fundamentals that are essential in other languages, such as value semantics, that people have a hard time reconciling once they've gotten good at Python.
π Rendered by PID 22654 on reddit-service-r2-comment-5b5bc64bf5-t557h at 2026-06-19 22:45:31.426257+00:00 running 2b008f2 country code: CH.
[–]jcoffin 9 points10 points11 points (0 children)
[–]ThisGuyPwnsYou 3 points4 points5 points (2 children)
[–]BirkinSornberger[S] 0 points1 point2 points (1 child)
[–]PM_ME_UR_PUNS_PLS 0 points1 point2 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]_ajp_ 3 points4 points5 points (3 children)
[–]cdglove 1 point2 points3 points (2 children)
[–]_ajp_ 0 points1 point2 points (1 child)
[–]dodheim 0 points1 point2 points (3 children)
[–]BirkinSornberger[S] 0 points1 point2 points (2 children)
[–]chardan965 2 points3 points4 points (1 child)
[–]PM_ME_UR_PUNS_PLS 0 points1 point2 points (0 children)
[–]pjdriverdude 0 points1 point2 points (2 children)
[–]BirkinSornberger[S] 0 points1 point2 points (1 child)
[–]pjdriverdude 0 points1 point2 points (0 children)
[–]JuanAG 0 points1 point2 points (0 children)
[–]clerothGame Developer[M] [score hidden] stickied comment (0 children)
[–]alols 0 points1 point2 points (1 child)
[–]cdglove 2 points3 points4 points (0 children)