Runtime Type Information |
5 |
![]() |
In C++, pointers to classes have a static type, which is the type written in the pointer declaration, and a dynamic type, which is determined by the actual type referenced. The dynamic type of the object could be any class type derived from the static type.
class A {}; class B: public A {}; extern B bv; extern A* ap = &bv; |
Here, ap has the static type A* and a dynamic type B*.
RTTI Options
RTTI support requires significant resources to implement. To enable RTTI implementation and to enable recognition of the associated typeid keyword, use the option -features=rtti. To disable RTTI implementation and to disable recognition of the associated typeid keyword, use the option
-features=no%rtti (default).
typeid Operator
The typeid operator produces a reference to an object of class type_info, which describes the most-derived type of the object. In order to make use of the typeid() function, source code must #include the <typeinfo.h> header file. The primary value of this operator/class combination is in comparisons. In such comparisons, the top-level const-volatile qualifiers are ignored, as in the following example.
The typeid operator will raise a bad_typeid exception when given a null pointer.
type_info Class
The class type_info describes type information generated by the typeid operator. The primary functions provided by type_info are equality, inequality, before and name. From <typeinfo.h>, the definition is:
The before function compares two types relative to their implementation-dependent collation order. The name function returns an implementation-defined, null-terminated, multi-byte string, suitable for conversion and display.