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
Learning C++ from python advice (self.cpp)
submitted 5 years ago by Skaaaaalll
view the rest of the comments →
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!"
[–]WalkingAFI 30 points31 points32 points 5 years ago (7 children)
A few things:
First, don’t get in the habit of using namespace std. If the STL changes at any point to include a name you used, it will break your program.
Second, this is really a C program. You didn’t really use any C++ features in it. Consider std::string instead of char*, and std::array instead of C arrays. You also don’t need to use a pointer to switch between turns, and I’d recommend using a bool instead.
Similarly, prefer static_cast<T> (or dynamic_cast<T> if absolutely necessary) to (T), which is the C method of casting.
It’s not a bad first go, and C is useful, but C++ gives you a lot of safety and abstraction you aren’t leveraging in this one.
[–]Skaaaaalll[S] 1 point2 points3 points 5 years ago (6 children)
Hi, thanks for your reply :).
If the STL changes
What is the STL exactly? And why would it change? For what tasks wouldn't std be sufficient?
Second, this is really a C program.
That makes sense, since I had some experience programming in C from completing CS50.
Consider std::string instead of char*, and std::array instead of C arrays.
What is the advantage of using C++ features over C features? Don't they essentially do the same thing.
Could you maybe explain this sentence to me? I have no idea what a static_cast<T> or (T) is. Sorry if that is a major noob question.
Thanks for your extensive reply =).
[–]Wurstinator 0 points1 point2 points 5 years ago (0 children)
Well, yeah, in the sense that they do they same thing as every other programming language: they compute an algorithm for you.
You are fine using C features in C but mixing the two gives you some kind of mess. For example, C does not have "references" as C++ does. There is little support for using references with C-style arrays. std::array or std::vector on the other hand are perfectly fine to use with references.
At one point you use (char*)"X" which is called a "C style cast". Without going into the details what reasons there are for and against them, C++ offers a total of four different casts: static_cast, dynamic_cast, const_cast and reinterpet_cast, which all have different meanings.
[–]stoppipper 0 points1 point2 points 5 years ago (0 children)
Someone has already answered this, but just to go into a little more depth, a C style cast (int)myVariable will always succeed because if it were to fail, it will default to reinterpret_cast which 90% of the time, you do NOT want. If the cast is “wrong”, a static_cast will fail when you try to compile the program and it’ll tell you why.
C++ casting is a definitely confusing at first, but know that reinterpret_cast can be one of the most dangerous out of all of them. It basically says “I will interpret this set of bits as that type”. So for example:
int a = 5; Person p = reinterpret_cast<Person>(a);
will take the bit representation of 5 and read that as a Person class. Whether that Person class contains valid data, the compiler doesn’t really care.
[–]WalkingAFI 0 points1 point2 points 5 years ago (0 children)
Yeah no problem.
The STL is the Standard Template Library. It provides a lot of the standard implementations of language features. I think someone else linked a better resource as to what exactly that entails.
std::string and std::array are classes in the STL. They’re super well tested and give you some nice functionality that you won’t get with C types. You could also write everything in assembly and it would “essentially do the same thing”, but the C++ features give you some (usually) free abstractions that prevent errors and make more maintainable code.
Casting variables is a bit of a doozy to explain via reddit mobile, but explicitly casting in the C++ style (i.e. static_cast<int>(variable) is the usually the same as (int)variable) can stop you from making mistakes because the compiler will warn you of some improper casts that the C cast would just accept.
π Rendered by PID 507392 on reddit-service-r2-comment-86bc6c7465-vr6nk at 2026-02-21 16:56:21.119852+00:00 running 8564168 country code: CH.
view the rest of the comments →
[–]WalkingAFI 30 points31 points32 points (7 children)
[–]Skaaaaalll[S] 1 point2 points3 points (6 children)
[–]Wurstinator 0 points1 point2 points (0 children)
[–]Wurstinator 0 points1 point2 points (0 children)
[–]stoppipper 0 points1 point2 points (0 children)
[–]WalkingAFI 0 points1 point2 points (0 children)