Typeid

From Wikipedia, the free encyclopedia

The correct title of this article is typeid. The initial letter is shown capitalized due to technical restrictions.

In C++, the typeid keyword is used to determine the class of an object at runtime. According to the C++ specification, it returns a reference to type_info. typeid is often preferred to dynamic_cast<class_type> in situations where just the class information is needed, because typeid is a constant-time procedure, whereas dynamic_cast must traverse the class derivation lattice of its argument at runtime.

[edit] Example

  #include <iostream>
  #include <typeinfo>
  using namespace std;
  
  class Person {
  public:
      // ... Person members ...
      virtual ~Person() {}
  };
  
  class Employee : public Person {
      // ... Employee members ...
  };
  
  int main ()
  {
      Person person;
      Employee employee;
      Person *ptr = &employee;
  
      cout << typeid(person).name() << endl;
      cout << typeid(employee).name() << endl;
      cout << typeid(ptr).name() << endl;
      cout << typeid(*ptr).name() << endl;
  
      return 0;
  }

Output (exact output varies by system):

  Person
  Employee
  *Person
  Employee

[edit] See also