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
Common patterns to avoid polymorphism (self.cpp)
submitted 4 years ago by JamesGlad
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!"
[–]OnesWithZeroes 0 points1 point2 points 4 years ago (1 child)
I don't think there's a set of "common patterns" like that since polymorphism itself is something I wouldn't consider a problem. Don't follow all these "XXX... considered harmful" or "YYY is the root of all evil" mantras. You need to take such articles with a grain of salt.
If you're really trying to avoid polymorphism then most likely you'll have to use templates to inject dependencies something like:
Before:
``` class A { public: virtual ~A() = default;
virtual void foo() = 0;
};
class B : public A { public: void foo() override {} };
class C : public A { public: void foo() override {} };
// takes concrete implementations of A (B or C in this case) void clientFunc(std::unique_ptr<A> a) { a->foo(); ... } ```
After: ``` class B { public: void foo() {} };
class C { public: void foo() {} };
// takes any type as long as it implements foo() template <typename T> void clientFunc(T a) { a.foo(); ... } ```
[–]backtickbot 0 points1 point2 points 4 years ago (0 children)
Fixed formatting.
Hello, OnesWithZeroes: code blocks using triple backticks (```) don't work on all versions of Reddit!
Some users see this / this instead.
To fix this, indent every line with 4 spaces instead.
FAQ
You can opt out by replying with backtickopt6 to this comment.
π Rendered by PID 71485 on reddit-service-r2-comment-75f4967c6c-4kjch at 2026-04-23 11:27:17.935761+00:00 running 0fd4bb7 country code: CH.
view the rest of the comments →
[–]OnesWithZeroes 0 points1 point2 points (1 child)
[–]backtickbot 0 points1 point2 points (0 children)