このコードがBaseを出力する理由を私に説明することはできますか? typeid
の定義によりTypeidの動作がC++で
#include <iostream>
#include <cstdio>
using namespace std;
class Base;
void testClassType (Base& b);
class Base
{
virtual void f(){};
};
class Derived :public Base
{
};
int main()
{
Base b;
Derived d;
testClassType(b);
testClassType(d);
}
void testClassType(Base& b)
{
cout<<endl<<"It is:"<<typeid(b).name();
}
具体的な回答はありません。しかし、 'type_info :: name'の内容にはC++標準によって保証されていないことを指摘する価値があります。ですから、特定の値を含んだそれに頼るべきではありません。 –