Good design stipulates that concrete classes should do a single, relatively small thing well and efficiently. Especially in C++, concrete classes emphasize their similarity to concrete types like int
and char
, often by operator overloading and by having only non-virtual functions. As concrete classes are not intended to display polymorphic behavior, they should not be inherited. Also see section 25.2 of The C++ Programming Language for more information on the proper use of concrete types in that language.