In many frameworks and software projects, all classes are enforced to be descendants of one common generic class, usually named Object. This design policy prevails in other OO language such as Smalltalk and Java, whose classes are all derived from class Object implicitly. However, imitating that in C++ is superfluous. It even incurs many compromises and potential bugs. For example, such policy results in artificial kinship relations among classes which have absolutely nothing in common – do classes like Window, Transmitter and Exception share any commonality? Probably not. If it’s genericity you’re after, that is to say, you need an algorithm/container/function which works for all classes, you may find out that templates will serve you better. Moreover, such design policy also forces you to refrain from multiple inheritance entirely, since any class derived simultaneously from two or more base classes faces the Deadly Derivation Diamond problem: it embeds more than one Object member. Finally, the Object class usually serves as a means of implementing exception handling and RTTI, both of which are now integral parts of the C++ standard anyway.