首页 > 代码库 > C++中的typeid和dynamic_cast
C++中的typeid和dynamic_cast
1、typeid在没有虚函数时(不涉及到动态联编),typeid仅仅返回其操作对象的实际类型
2、typeid涉及到动态联编问题时(使用基类指针p或者引用p操作派生类对象),typeid(p)返回基类类型,typeid(*p)返回派生类类型;typeud(&p)返回基类类型,typeid(p)返回派生类类型
3、dynamic_cast在动态联编(实时类型信息)问题中,可以实现基类指针(或引用)和派生类指针(或引用)之间的尝试性动态转换
#include "stdafx.h" #include <iostream> #include <typeinfo> using namespace std; class Base { public: int m_base; virtual void show() { cout<<"This is Base class"<<endl; } }; class Derived:public Base { public: int m_derived; void show() { cout<<"This is Derived class"<<endl; } }; int main(int argc,char* argv[]) { Base *pb=new Derived(); cout<<typeid(pb).name()<<endl; cout<<typeid(*pb).name()<<endl; system("pause"); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。