1、功能
打印变量的类型
2、使用
①、
int a; cout<<typeid(a).name();//int
class A{ }; A a; cout<<typeid(a);//class A A* b = new A(); cout<<typeid(b);//class A *
3、获取继承中实体对象名
class A{ virtual void Process()=0; std::string GetThisObjName(){ std::string ret = typeid(*this).name(); //"class * A" ret = ret.substr(ret.find_first_of("* ")+1);//A return ret; } }; class B:public A{ virtual void Process(){} } void main() { A* p = new B(); cout<<p->GetThisObjName();//"B" }
注意A必须是定义成虚基类,不然编译器会把new B当作A实体,返回的就是"A",但是我们往往希望打印"B"。