typeid的type_info的返回值

时间:2015-12-19 07:18:29

标签: c++

我正在学习如何使用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

0 个答案:

没有答案