C++:typeid使用并获取实体类对象的名字

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"。

posted @ 2021-11-12 13:17  朱小勇  阅读(517)  评论(0编辑  收藏  举报