
Zitat von John Dlugosz
While there are technical reasons not to do so (absence of virtual destructor), there are also non technical ones.
It simply doesn't make sense to use inheritance for this. Inheritance is for polymorphism, not code reuse.
This is why for example free functions that take any range are better than member functions.
So, you would prefer to use a generic programming model rather than member-function calling syntax? Do you write your classes to have only private virtual member functions, and declare non-member friend functions that take an instance as one of the parameters and call the virtual functions? No public members at all!
If I have public member functions, and I want to extend that, it would be annoying to say "these 20 functions are members, and here is 1 more that is a non-member".
is your function an algorithm working WITH the container, or is it a function providing access to the container's contents? when you derive from a standard container without any additional state, it's most likely the former. for example, there is no std::vector::sort(), only std::sort(vector...) (although it seems to me the standard library doesn't draw a clear line there either. a lot of the member functions of std::string should have been free function algorithms)