RTTI-运行时类型识别
-
RTTI
编辑
- 中文名
- RTTI
- 外文名
- Run-Time Type Information
- 属 于
- 程序
- 函 数
- typeid
目录
- 1 RTTI介绍
- ▪ typeid函数
- ▪ type_info类
- ▪ typeid函数怎样创建type_info类的对象
- ▪ typeid函数的使用原理
- ▪ typeid函数使用方式
- ▪ 强制类型转换运算符
- ▪ dynamic_cast强制转换运算符
- ▪ dynamic_cast的注意事项
- 2 typeid的注意事项
RTTI介绍编辑
typeid函数
type_info类
1
2
3
4
5
6
7
8
9
10
11
12
|
classtype_info
{
private :
type_info(consttype_info&);
type_info&operator=(consttype_info&); //type_info类的复制构造函数和赋值运算符是私有的。
public :
virtual ~type_info(); //析构函数
booloperator==(consttype_info&) const ; //在type_info类中重载了==运算符,该运算符可以比较两个对象的类型是否相等。
booloperator!=(consttype_info&) const ; //重载的!=运算符,以比较两个对象的类型是否不相等
constchar*name() const ; //使用得较多的成员函数name,该函数反回对象的类型的名字。前面使用的typeid(a).name()就调用了该成员函数
boolbefore(consttype_info&);
};
|
typeid函数怎样创建type_info类的对象
typeid函数的使用原理
typeid函数使用方式
- 、使用type_info类中的name()成员函数反回对象的类型的名称。其方法为:typeid(object).name()其中object是要显示其相应类型名的对象,该函数反回的名字因编译器而定。这里要注意的就是使用方式一中提到的虚函数类型的问题,即如果有类A,且有虚函数,类B,C,D都是从类A派生的,且都重定义了类A中的虚函数,这时有类A的指针p,再把对象类B的对象的地址赋给指针p,则typeid(p).name()将反回的类型将是A*,因为这里的p表示的是一个指针,该指针是类型为A的指针,所以返回A*,而typeid(*p).name()将返回B,因为指针p是指向类B的对象的,而*p就表示的是类B的对象,所以返回B。
强制类型转换运算符
dynamic_cast强制转换运算符
dynamic_cast的注意事项
typeid的注意事项编辑
1
2
3
4
5
6
7
8
|
voidmenu::build(constFile*pfile)
{
//......
elseif( typeid (*pfile)== typeid (LocalizedMedia))
{
add_option( "play" );
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
voidmenu::build(constFile*pfile)
{
if ( dynamic_cast <MediaFile*>(pfile))
{
//pfile是MediaFile或者是MediaFile的派生类LocalizedMedia
add_option( "play" );
}
elseif( dynamic_cast <TextFile*>(pfile))
{
//pfile是TextFile是TextFile的派生类
add_option( "edit" );
}
}
|
RTTI-运行时类型识别相关推荐
- java 运行时类型_Java基础之RTTI 运行时类型识别
运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息. 多态(polymorphism)是基于R ...
- 深入浅出MFC学习笔记:MFC六大关键技术仿真之RTTI运行时类型识别
RTTI(运行时类型识别) 参考文献:深入浅出MFC-侯捷 怎样去构造类别型录网? 一.定义数据结构: 其中pFirstClass指针属于痊愈变量,所以它应该以static修饰之. 而且我们最终希望达 ...
- C++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern C
C++ 学习笔记之(19) new.delete表达式.RTTI(运行时类型识别).枚举.类成员指针.嵌套类.局部类.位域.volatile.extern C C++ 学习笔记之(19) new.de ...
- Java RTTI运行时类型识别
RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型. RTTI提供了以下两个非常有用的操作 ...
- java rtti_举例讲解Java的RTTI运行时类型识别机制
1.RTTI:运行时类型信息可以让你在程序运行时发现和使用类型信息. 在Java中运行时识别对象和类的信息有两种方式:传统的RTTI,以及反射.下面就来说下RTTI. RTTI:在运行时,识别一个对象 ...
- 白话C++系列(27) -- RTTI:运行时类型识别
http://www.cnblogs.com/kkdd-2013/p/5601783.html RTTI-运行时类型识别 RTTI:Run-Time Type Identification. 那么RT ...
- MFC六大核心机制之二:运行时类型识别(RTTI)
上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...
- c++远征之多态篇——运行时类型识别(RTTI)
以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.RTTI(Run-Time Type Information),运行时类型识别. 涉及typeid.dynamic_cast这两个知识点. R ...
- RTTI机制(运行时类型识别)
RTTI机制(运行时类型识别) 在多态里面,基类里的虚函数和派生类里的虚函数形成了遮蔽,这就导致在主程序运行时,有些表达式的类型没有办法确定.必须等到程序运行结束后,根据具体的环境才能确定.看下面的代 ...
- C++11 的 运行时类型识别type_info
一.type_info与typeid 类type_info保存关于类型的特定于实现的信息,包括类型的名称,以及比较两个类型是否相等或排序顺序的方法. 这是typeid操作符返回的类.具有如下特点: ( ...
最新文章
- 不要争了,别的程序员是这么给变量起名的!
- 转载:中年程序猿的迷茫,你还在深究技术吗?
- localdate计算相差天数_还在苦恼MySQL如何根据日期精确计算年龄?看这一篇,就够了
- 常见电脑字符编码总结
- SUSE Linux启动过程执行脚本顺序
- 人脸识别腾讯安排上了!孩子不能再任意冒用家长身份信息
- unrecognized selector sent to instance
- R语言包下载(转载)
- 【梳理】离散数学 第19章 初等数论 19.3 同余 19.4 一次同余方程
- “华硕zx50j,键盘背光灯无法显示,fn组合键不可用”解决办法
- Python进阶之八皇后算法
- Java我的世界forge安装失败,我的世界forge安装失败install怎么办
- 家有千金之冰糖绿豆汤
- 实战分析APP提交苹果App Store审核被拒绝的一些原因以及对策
- RxJS 6 —— operators
- Windows找回磁盘被病毒感染后隐藏的文件
- 17-11-01模拟赛
- 读《人性的优点》有感
- 大疆FPGA/芯片开发工程师(B卷)笔试题(含详解)
- 怎么查快递到哪里了?快递单号查询全部物流
热门文章
- idea代码可以编译但是爆红_推荐一款 IDEA 生成代码神器,写代码再也不用加班了...
- jvm垃圾回收机制_干货|JVM垃圾回收机制
- Java构造函数可以私有,我们可以在Java中使用私有的构造函数吗?
- java 获取所有带指定注解的类名_SXT DAY023 反射和注解
- truncate python是删除文件内容吗_在Python中操作文件之truncate()方法的使用教程
- python数据分析兼职能挣钱吗_Python开发能从事数据分析吗
- 作为Java程序员,这些开源工具你应该要学习!
- 伪类如何动态在html设置样式,用js实现before和after伪类的样式修改的示例代码
- python字典替换值_python字典改变value值方法总结
- 邢台职业技术学院计算机系宿舍,邢台职业技术学院宿舍条件怎么样 男生女生宿舍图片...