Why is there no universal base class in C++?

The definitive ruling is found in Stroustrup’s FAQs.
In short, it doesn’t convey any semantic meaning. It will have a cost. Templates are more useful for containers.

Why doesn’t C++ have a universal class Object?

  • We don’t need one: generic programming provides statically type safe alternatives in most cases. Other cases are handled using multiple inheritance.

  • There is no useful universal class: a truly universal carries no semantics of its own.

  • A “universal” class encourages sloppy thinking about types and interfaces and leads to excess run-time checking.

  • Using a universal base class implies cost: Objects must be heap-allocated to be polymorphic; that implies memory and access cost. Heap objects don’t naturally support copy semantics. Heap objects don’t support simple scoped behavior (which complicates resource management). A universal base class encourages use of dynamic_cast and other run-time checking.

Leave a Comment