Run-time type information
From DocForge
(Redirected from Runtime Type Information)
In programming, Runtime Type Information (RTTI, Runtime Type Identification) means keeping information about an object's data type in memory at runtime. Run-time type information can apply to simple data types, such as integers and characters, or to generic objects.
In the case of objects, some implementations are limited to keeping the inheritance tree while others include information about objects' methods and attributes.
Although available in several computer languages, RTTI, as a term, is typically used in relation to C++. In order for the dynamic cast<> operation, the typeid operator or exceptions to work in C++, RTTI must be enabled.
See also reflection.
[edit] Example in C++
/* As base class pointer can point to objects of any class which is derived * from it. RTTI is useful to identify which type (derived class) of object is * pointed by a base class pointer my example will show it: */ #include <iostream> class abc // base class { public: virtual void hello() { std::cout << "in abc"; } }; class xyz : public abc { public: void hello() { std::cout << "in xyz"; } }; int main() { abc *abc_pointer = new xyz(); xyz *xyz_pointer; // to find whether abc is pointing to xyz type of object xyz_pointer = dynamic_cast<xyz*>(abc_pointer); if (xyz_pointer != NULL) std::cout << "abc pointer is pointing to a xyz class object"; // identified else std::cout << "abc pointer is NOT pointing to a xyz class object"; return 0; }
An instance where RTTI is used is illustrated below:
class base { virtual ~base(){} }; class derived : public base { public: virtual ~derived(){} int compare (derived &ref); }; int my_comparison_method_for_generic_sort (base &ref1, base &ref2) { derived & d = dynamic_cast<derived &>(ref1); // rtti used here // RTTI enables the process to throw a bad_cast exception // if the cast is not successful return d.compare (dynamic_cast<derived &>(ref2)); }
Additional copyright notice: Some content of this page is a derivative work of a Wikipedia article under the GNU FDL. The original article and author information can be found at http://en.wikipedia.org/wiki/Run-time_type_information.
Do you have information or insights to contribute to this article? Please feel free to edit this page. Ask questions or contribute to the discussion on this article's talk page.

