The virtuality of a type defines whether the type is virtual (so that it can be redefined in a subtype of the enclosing type), redefined (a redefined type, but still virtual), or finalised, that a redefinition that cannot be further redefined.
<virtuality>::= virtual | redefined | finalized
virtual is used when a type is introduced as a virtual type. A virtual type must be a type defined locally to another type; the implication is that it can be redefined in types that inherit from the enclosing type.
redefined is used when the redefinition of a virtual type is still virtual.
finalized is used when the redefinition is not virtual.