最近在读 Thinking in Java 这本书。读到类型信息这一张时,刚开始对书中所说的RTTI和反射彻底混了,不知道有什么联系,有哪些相同点和区别。于是在网上又找了些内容辅助理解,这一章又重新读了一遍,对上面的这些疑问有了自己的答案,想到RTTI和反射时,脑海中有了自己的轮廓。 它俩的目的一样 ...
分类:
编程语言 时间:
2016-04-23 19:55:02
阅读次数:
240
1.禁用RTTI 禁用的方法很简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了: { Reduce EXE size by disabling as much of RTTI as p ...
目录 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这就是RTTI(Runtime Type Information,运行时类型信息)。 在java中,有两种RTTI的方式,一种是传统的,即假设在编译时已经知道了所有的类型;还 ...
分类:
编程语言 时间:
2016-04-13 12:58:53
阅读次数:
242
运行时类型信息使得你可以在程序运行时发现和使用类型信息。 java在运行时识别对象和类的信息有两种方式:(1)“传统的”RTTI,它假定我们在编译时已经知道了所有的类型;(2)“反射”机制,它允许我们在运行时发现和使用类的信息。 一、为什么需要RTTI(Run-Time-Type-Informati ...
分类:
其他好文 时间:
2016-04-08 06:31:56
阅读次数:
134
RTTI,简单的说,就是判定A类是否为B类的基类。如图所示,我仿真它的用法,虚构了一个类群,分别列出了各个类的派生层次。 怎么能知道一个类是否是另一个类的基类呢?采用的方法是:每个类中放置一个结构体结点,在这个结点中存放几个指针,其中有一个存放该类基类的结构体地址,然后通过类似链表的形式串连起来。比 ...
分类:
编程语言 时间:
2016-04-04 01:26:29
阅读次数:
235
还记得David I 今年四月来盛大时,被问及“反射机制能再做得好一点吗?我们想放弃RTTI”,David I 回答“这的确是需要考虑的地方,当然RTTI我们不会放弃的”。(这个白胡子的老哥哥还真很可爱,当年Borland几经起落,唯一能看得顺眼的就是David I)。 我还以为RTTI在D2010 ...
分类:
其他好文 时间:
2016-04-01 20:32:51
阅读次数:
198
[delphi] view plain copy unit Unit_main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ...
一、文章来由虚函数表究竟存放在哪里?二、概念C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。对...
分类:
编程语言 时间:
2016-03-26 06:58:13
阅读次数:
303
RTTI,即Run-Time Type Identification,运行时类型识别。它假定我们在编译时已经知道了所有的类型。那么在运行时就能够自动识别每个类型。 很多时候需要进行向上转型,比如Base类派生出Derived类,但是现有的方法只需要将Base对象作为参数,实际传入的则是其派生类的引用
分类:
编程语言 时间:
2016-03-10 23:17:04
阅读次数:
303
C++中的RTTI通过两个操作符typeid和dynamic_cast实现 这两个操作符的使用只有在包含虚函数的时候才有效。 这两个操符的实现都需要用到type_info对象,这个对象保存了类型的信息。 当对象包含虚函数的时候会有一个虚函数表,而对象的最前面有一个指针指向了这个虚函数表,同时在虚函数
分类:
其他好文 时间:
2016-03-07 11:38:48
阅读次数:
311