代码如下:
#include <iostream> #include <typeinfo> using namespace std; class A{ public: void print(){ cout << "Class A called!" << endl; } }; class B :public A{ void print(){ cout << "Class B called!" << endl; } }; void main(){ B *b = new B; A *a = new A; A *c = b; cout << typeid(b).name() << endl; cout << typeid(*b).name() << endl; cout << typeid(a).name() << endl; cout << typeid(*a).name() << endl; cout << typeid(c).name() << endl; cout << typeid(*c).name() << endl; getchar(); }
运行截图如下:
这里面要说明下:
cout << typeid(b).name() << endl;
这个b是一个指针,他指向了*b,所以他的类型为*b,
而*b才是b这个类。