#include #include using namespace std; class A { public: virtual void do_it() { cout << "I'm an A" << endl; } }; class B : public A { public: void do_it() { cout << "I'm an B" << endl; } }; class C : public A { public: class D {}; D d; void do_it() { cout << "I'm an C" << endl; } }; int main(void) { A a; B b; C c; A* obj; cout << typeid(obj).name() << endl; obj = &a; cout << typeid(*obj).name() << endl; obj = &b; cout << typeid(*obj).name() << endl; if (typeid(*obj) == typeid(b)) cout << "on pointe un B" << endl; obj = &c; cout << typeid(*obj).name() << endl; C* cobj = dynamic_cast(obj); cout << typeid(cobj->d).name() << endl; return 0; }