⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_type_cast_1_typeid_2.cpp

📁 对于一个初涉VC++的人来书
💻 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 + -