Second Edition
如果编译器还不支持RTTI,可以在类库中很容易地建立自己的RTTI。这是很有意义的事情,因为在人们发现所有的类库实际上都有要用到某种形式的RTTI之后才在C++引入RTTI。(在异常处理被加入到C++后,人感觉“自由”一些了,因为异常处理要求有关类的准确信息)。从本质上说,RTTI只要两个函数就行了,一个用来指明类的准确类型的虚函数,一个取得基类的指针并将它向下映射成派生类,这个函数必须产生一个指向更加派生类的指针(我们可能希望也能处理引用)。有许多方法来实现我们自己的RTTI,但都要求每个类有一个唯一的标识符和一个能产生类型信息的虚函数。下例用了一个叫dynacast()的静态成员函数,它调用一个类型信息函数dynamic_type(),这两个函数都必须在每个新派生类中重新定义:
有关Java的RTTI运行时类型识别机制,可以参考举例讲解Java的RTTI运行时类型识别机制。如果你对Java进阶教程感兴趣,不妨看看Java进阶教程之运行时类型识别RTTI机制。了解更多关于异常处理的知识,可以访问Java异常类处理。
第18章运行时类型识别395
下载地址
用户评论