📄 demo_type_cast_1_typeid_2.cpp
字号:
//*****************************************************
// 使用typeid操作符支持C++运行时类型信息(RTTI)特征
// 此时必须包含typeinfo.h头文件,
// 并启用RTTI编译选项Enable Run-Time Type Information
//*****************************************************
// typeid最重要的用途是对于一个多态的基类指针,
// 可以判定在运行时基类指针所指的实际对象类型.
//*****************************************************
# include <iostream.h>
# include <typeinfo.h>
class Base
{
public:
virtual void func() {} //虚函数的多态
// void func() {} //一般函数则不支持多态
};
class Derived: public Base {};
//void what_type(Base b) //函数参数一般对象时不支持多态
void what_type(Base & b)
{
cout<<typeid(b).name()<<endl;
}
void main()
{
Base *pb;
Derived d;
pb=&d; //赋值兼容规则
cout<<typeid(pb).name()<<endl;
//虚函数多态编译后出现如下警告:
//warning : 'typeid' used on polymorphic type 'class Base' with /GR-;
//unpredictable behavior may result
//此时启用运行时类型信息编译选项.
cout<<typeid(* pb).name()<<endl; //注意: 指针pa所指向对象的类型!
//虚函数多态编译后出现如下警告:
//warning : 'typeid' used on polymorphic type 'class Base' with /GR-;
//unpredictable behavior may result
//此时启用运行时类型信息编译选项.
what_type(d);
return;
}
/*
class Base *
class Derived
class Derived
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -