特殊工具与技术--运行时类型识别[续] 三.RTTI的使用 当比较两个派生类对象的时候,我们希望比较可能特定于派生类的数据成员.如果形参是基类引用,就只能比较基类中出现的成员,我们不能访问在派生类中但不在基类中出现的成员. 因此我们可以使用RTTI,在试图比较不同类型的对象时返回假(false)。 我们将定义单个相等操作符。每个类定义一个虚函数 equal,该函数首先将操作数强制转换为正确的类型。...
分类:
编程语言 时间:
2014-08-13 22:36:07
阅读次数:
383
《C++ Primer Plus》学习笔记9
第15章 友元、异常和其它
主要内容:
1)友元类
2)友元类方法
3)嵌套类
4)引发异常、try块和catch块
5)异常类
6)运行阶段类型识别(RTTI)
7)dynamic_cast和typeid
8)static_cast、const_cast和reiterpret_cast
1、对于Remote对象的TV...
分类:
编程语言 时间:
2014-07-23 13:31:18
阅读次数:
289
特殊工具与技术
--运行时类型识别
引:
通过下面两个操作符提供RTTI:
1.typeid操作符,返回指针或引用所指对象的实际类型。
2.dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。
对于带虚函数的类,在运行时执行RTTI操作符,但对于其他类型,在编译时计算RTTI操作符。
当具有基类的引用或指针,但需要执行不是基类组成部分的派生类操作的时候,需要动态的强制类型转换。通常,从基类指针获得派生类行为最好的方法是通过虚...
分类:
编程语言 时间:
2014-07-19 11:45:04
阅读次数:
258
WB_BIU模块是OR1200处理器与外部Wishbone总线连接的接口模块,15.1节给出了WB_BIU模块的对外连接关系,并指出WB_BIU模块的三个作用。因为OR1200处理器支持Wishbone B3版本,所以在15.2节介绍了Wishbone B3版本中的寄存反馈总线周期,重点说明了其中的周期类型识别地址标签CTI_O/CTI_I、突发类型扩展地址标签BTE_O/BTE_I的作用。...
分类:
其他好文 时间:
2014-07-01 15:31:19
阅读次数:
550
MFC六大核心机制概述
我们选择了C++,主要是因为它够艺术、够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为必然。
首先,列出要讲的MFC六大核心机制: 1、MFC程序的初始化。 2、运行时类型识别(R...
分类:
其他好文 时间:
2014-06-07 08:11:34
阅读次数:
190
命名的强制类型转换:
有static_cast、dynamic_cast、const_cast、reinterpret_cast四种。
dynamic_cast支持运行时类型识别。
static_cast:该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。...
分类:
编程语言 时间:
2014-06-04 13:59:48
阅读次数:
333
本文只讲述typeid这个操作符,呃 ,它确实是一个操作符,类似于 sizeof 操作符。
在将该操作符之前,不得不提的是
RTTI(Run-Time Type Identification,运行时类型识别),其实就是说在运行期得到对
象的实际的类型。这立刻使我们想到了
“可以通过基类的指针和引用可以指向实际的派生类型”。啊哦,答对了,这就是typeid
这个强大操作符所做的事...
分类:
编程语言 时间:
2014-05-07 05:58:26
阅读次数:
350
以下大部分内容摘自《windows程序设计 第2版》 王艳平 张铮
编著动态类型识别:在程序运行过程中,辨别对象是否属于特定类的技术。应用举例:函数辨别参数类型、需要针对对象的类编写特定的代码。CRuntimeClass
包含类信息(不仅包含一般的信息,还包括创建类的函数指针)#include #i...
分类:
其他好文 时间:
2014-05-05 22:01:36
阅读次数:
383
场景:
1. C++引入了dynamic_cast 这种类型识别的强制转换,对识别错误的程序是有好处的,建议能用的地方就用,它能在转换错误时返回0或抛出异常,比起C的旧强制转换
执行转换了不对类型依旧不会报错可靠些,因为这类错误如果发生了,其实很难找出来。...
分类:
编程语言 时间:
2014-05-03 21:55:11
阅读次数:
333