我正在学习如何使用typeid和type_info。所以我在教科书中输入了代码,发现输出与教科书中的内容不同。我不知道问题出在哪里。
#include <iostream>
#include <typeinfo>
using namespace std;
class Base{
public:
virtual ~Base() {}
};
class Derived:public Base {};
void fun(Base *b)
{
const type_info& info1=typeid(b);
const type_info& info2=typeid(*b);
cout<<"typeid(b):"<<info1.name()<<endl;
cout<<"typeid(*b):"<<info2.name()<<endl;
if(info2==typeid(Base))
cout<<"A base class!"<<endl;
}
int main()
{
Base b;
fun(&b);
Derived d;
fun(&d);
return 0;
}
我希望它能给我结果:
typeid(b):class Base*
typeid(*b):class Base
A base class!
typeid(b):class Base*
typeid(*b):class Derived
但实际上我的结果如下:
typeid(b):P4Base
typeid(*b):4Base
A base class!
typeid(b):P4Base
typeid(*b):7Derived