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 class of fancies, of exquisite delicacy, which are not thoughts, and to which, as yet, I have found it absolutely impossible to adapt language.... Now, so entire is my faith in the power of words, that at times, I have believed it possible to embody even the evanescence of fancies such as I have attempted to describe.
    Edgar Allan Poe (1809–1849)

    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)