| C++ Programming Guide |
Runtime Type Identification
This chapter explains the use of Runtime Type Identification (RTTI). Use this feature while a program is running to find out type information that you could not determine at compile time.
6.1 Static and Dynamic Types
In C++, pointers to classes have a static type, 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. In the following example,
aphas the static typeA*and a dynamic typeB*.
class A {};class B: public A {};extern B bv;extern A* ap = &bv;RTTI allows the programmer to determine the dynamic type of the pointer.
6.2 RTTI Options
In compatibility mode (
-compat[=4]), RTTI support requires significant resources to implement. RTTI is disabled by default in that mode. To enable RTTI implementation and recognition of the associatedtypeidkeyword, use the option-features=rtti. To disable RTTI implementation and recognition of the associatedtypeidkeyword, use the option--features=no%rtti(the default).In standard mode (the default mode), RTTI does not have a significant impact on program compilation or execution. RTTI is always enabled in standard mode.
6.3
typeidOperatorThe
typeidoperator produces a reference to an object of classtype_info, which describes the most-derived type of the object. To make use of thetypeid()function, the source code must#includethe<typeinfo>header file. The primary value of this operator and class combination is in comparisons. In such comparisons, the top-levelconstandvolatilequalifiers are ignored, as in the following example. Note that, in this example,AandBare types which have default constructors.
The
typeidoperator throws abad_typeidexception when given a null pointer.6.4
type_infoClassThe class
type_infodescribes type information generated by thetypeidoperator. The primary functions provided bytype_infoare equality, inequality,beforeandname. From<typeinfo.h>, the definition is:
The
beforefunction compares two types relative to their implementation-dependent collation order. Thenamefunction returns an implementation-defined, null-terminated, multibyte string, suitable for conversion and display.The constructor is a private member function, so you cannot create a variable of type
type_info. The only source oftype_infoobjects is in thetypeidoperator.
|
Sun Microsystems, Inc. Copyright information. All rights reserved. Feedback |
Library | Contents | Previous | Next | Index |