#include <typeinfo>
#include <iostream>
using namespace std;
class A
{
public:
?void print(){}
?~A(){}
};
class AA:public A
{
public:
?virtual void printaa()
?{}
};
class AAA:public AA
{
};
int main()
{
?? AA aa;
?? AAA aaa;
?? A *a=&aa;
?? cout<<typeid(a).name()<<endl;
?? cout<<typeid(*a).name()<<endl;
?? a=&aaa;
?? cout<<typeid(a).name()<<endl;
?? cout<<typeid(*a).name()<<endl;
?? AA *a2=&aaa;
?? cout<<typeid(a2).name()<<endl;
?? cout<<typeid(*a2).name()<<endl;
??? cout<<typeid(A).name()<<endl;??
?? cout<<typeid(A*).name()<<endl;
?? cout<<typeid(A&).name()<<endl;
?AA &a3=aa;
?? cout<<typeid(a3).name()<<endl;
?? cout<<typeid(&a3).name()<<endl;
?? return 1;
}
class A *
class A
class A *
class A
class AA *
class AAA
class A
class A *
class A &
class? AA
class AA *
當(dāng)typeid操作數(shù)是類類型,但不是帶有虛擬函數(shù)的類類型時,typeid操作符回指出操作數(shù)的類型,而不是底層對象的類型。
一般當(dāng)類中沒有其他可聲明為虛函數(shù)的函數(shù)時,就應(yīng)該把析構(gòu)函數(shù)聲明為 ? virtual ? ?
? 只有類中包含virtual函數(shù)的時候,才能使用 ? RTTI