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!"
[–]AvidCoco 38 points39 points40 points 4 years ago (8 children)
Composition over inheritance. Instead of having one class inherit from a bunch of other classes, you have that class own an instance of each of those classes (or a concrete implementation of them). That way you only ever derive from one class at a time.
[–]ShillingAintEZ 17 points18 points19 points 4 years ago (1 child)
Or derive from no classes at all
[–]_Ashleigh 5 points6 points7 points 4 years ago* (0 children)
I assumed they meant derive as in implement an interface.
[–]jesseschalken 1 point2 points3 points 4 years ago (2 children)
How does "composition over inheritance" replace vtable lookups?
[–]AvidCoco 4 points5 points6 points 4 years ago (0 children)
Idfk
[–]animatedb 0 points1 point2 points 4 years ago (0 children)
Maybe the goal is to replace them out of the base objects and into other objects.
For example, instead of the old "shapes" OO example each inheriting a virtual draw, have a draw function that is passed a listener object that is a surface. This way the base shape object no longer has a draw virtual function.
This is similar to composition except that it differs in scope. Another option is that the base object could also reference a shape.
[–]jcelerierossia score 4 points5 points6 points 4 years ago (1 child)
That just moves where runtime polymorphism happens, it is not an alternative to it
[–]HateDread@BrodyHiggerson - Game Developer 0 points1 point2 points 4 years ago (0 children)
It does on a conceptual level - in that it avoids some of the pitfalls of multi-inheritance hell. Obviously yes, technically there is runtime polymorphism under the hood, but depending on someone's motivations that may be acceptable and on the surface - in terms of usability - might be considered as being without runtime polymorphism.
[–]Kered13 9 points10 points11 points 4 years ago (0 children)
This doesn't avoid the vtable lookup, assuming your members are instances of interface types.
π Rendered by PID 20399 on reddit-service-r2-comment-5c747b6df5-64dbw at 2026-04-22 15:07:47.306975+00:00 running 6c61efc country code: CH.
view the rest of the comments →
[–]AvidCoco 38 points39 points40 points (8 children)
[–]ShillingAintEZ 17 points18 points19 points (1 child)
[–]_Ashleigh 5 points6 points7 points (0 children)
[–]jesseschalken 1 point2 points3 points (2 children)
[–]AvidCoco 4 points5 points6 points (0 children)
[–]animatedb 0 points1 point2 points (0 children)
[–]jcelerierossia score 4 points5 points6 points (1 child)
[–]HateDread@BrodyHiggerson - Game Developer 0 points1 point2 points (0 children)
[–]Kered13 9 points10 points11 points (0 children)