旅途

如果想飞得高,就该把地平线忘掉

typeid

#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 *
当typeid操作数是类类型,但不是带有虚拟函数的类类型时,typeid操作符回指出操作数的类型,而不是底层对象的类型。

一般当类中没有其他可声明为虚函数的函数时,就应该把析构函数声明为   virtual    
  只有类中包含virtual函数的时候,才能使用   RTTI

posted on 2007-10-06 01:24 旅途 阅读(352) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理