// type_info example #include #include using namespace std; struct Base {}; struct Derived : Base {}; struct Poly_Base {virtual void Member(){}}; struct Poly_Derived: Poly_Base {}; int main() { // built-in types: int i; int * pi; cout << "int is: " << typeid(int).name() << '\n' << " i is: " << typeid(i).name() << '\n' << " pi is: " << typeid(pi).name() << '\n' << "*pi is: " << typeid(*pi).name() << "\n\n"; // non-polymorphic types: Derived derived; Base* b = &derived; cout << "derived is: " << typeid(derived).name() << '\n' << " *b is: " << typeid(*b).name() << '\n' << boolalpha << "same type? " << ( typeid(derived)==typeid(*b) ) << "\n\n"; // polymorphic types: Poly_Derived polyderived; Poly_Base* pb = &polyderived; cout << "polyderived is: " << typeid(polyderived).name() << '\n' << " *pb is: " << typeid(*pb).name() << '\n' << "same type? " << ( typeid(polyderived)==typeid(*pb) ) << '\n'; }