求高手解答关于typeid的问题
#include<typeinfo>
#include<iostream>
using namespace std;
struct A{virtual ~A(){}};
struct B:A {};
struct C{};
struct D:C{D(int) {}};
int main()
{
B b;
A *a=&b;
cout<<typeid(b).name()<<endl;
cout<<typeid(*a).name()<<endl; //这里为什么输出的是struct B?
cout<<boolalpha<<(typeid(*a)==typeid(b))<<endl;
cout<<(typeid(A)==typeid(const A))<<endl;
D d(1);
C *c=&d;
cout<<typeid(d).name()<<endl;
cout<<typeid(*c).name()<<endl; //而这里为什么输出的是 struct C呢?
cout<<boolalpha<<(typeid(d)==typeid(*c))<<endl;
//cout<<(typeid(D)==typeid(const D))<<endl;
int i;
cout<<typeid(i).name()<<endl;
return 0;
}
问题已经在代码中问出求高手解答