Tagged Union - Class Hierarchies As Tagged Unions

Class Hierarchies As Tagged Unions

In a typical class hierarchy in object-oriented programming, each subclass can encapsulate data unique to that class. The metadata used to perform virtual method lookup (for example, the object's vtable pointer in most C++ implementations) identifies the subclass and so effectively acts as a tag identifying the particular data stored by the instance (see RTTI). An object's constructor sets this tag, and it remains constant throughout the object's lifetime.

Nevertheless, a class hierarchy involves true subtype polymorphism; it can be extended by creating further subclasses of the same base type, which could not be handled correctly under a tag/dispatch model. Hence, it is usually not possible to do case analysis or dispatch on a subobject's 'tag' as one would for tagged unions. Some languages such as Scala allow base classes to be "sealed", and unify tagged unions with sealed base classes.

Read more about this topic:  Tagged Union

Famous quotes containing the words class and/or unions:

    There is a struggle between the Oriental and the Occidental in every nation; some who would be forever contemplating the sun, and some who are hastening toward the sunset. The former class says to the latter, When you have reached the sunset, you will be no nearer to the sun. To which the latter replies, But we so prolong the day.
    Henry David Thoreau (1817–1862)

    When Hitler attacked the Jews ... I was not a Jew, therefore, I was not concerned. And when Hitler attacked the Catholics, I was not a Catholic, and therefore, I was not concerned. And when Hitler attacked the unions and the industrialists, I was not a member of the unions and I was not concerned. Then, Hitler attacked me and the Protestant church—and there was nobody left to be concerned.
    Martin Niemller (1892–1984)