社区
C++ 语言
帖子详情
请问大虾:帮我简明的解释一下RTTI,可否?
eduyu
2004-01-19 05:09:27
Run-time type information (RTTI) is a mechanism that allows the type of an object to be determined during program execution.
不懂。每个Object的类型在用的时候肯定是确定的了,难道还要在Run-time的时候determine?
...全文
35
11
打赏
收藏
请问大虾:帮我简明的解释一下RTTI,可否?
Run-time type information (RTTI) is a mechanism that allows the type of an object to be determined during program execution. 不懂。每个Object的类型在用的时候肯定是确定的了,难道还要在Run-time的时候determine?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BluntBlade
2004-01-20
打赏
举报
回复
M$也算厉害,几个宏就把RTTI搞出来。不过看得人头晕……
靖
2004-01-20
打赏
举报
回复
我的理解是这样的:RTTI是编译器支持的,可以在程序运行过程中检测对象类型的方法。
它有以下几种用法:
dynamic_cast,用于一些类型的强制转换
typeid,用获取一些运行时的信息,主要用于程序的自我检测,可以捕获一些类似于传递错误指针一类的错误。
具体使用方法MSND参见说明吧
youngphoneix
2004-01-20
打赏
举报
回复
何不去看《C++经典问答》?
robbit2002
2004-01-19
打赏
举报
回复
typeinfo
Wolf0403
2004-01-19
打赏
举报
回复
如果 Turbo C++ 3.0 也能支持 CRuntimeClass 的话,MS 岂不是颜面扫地了?呵呵。
不过我想 MFC7 还保留 CRuntimeClass 不是处于向下兼容的考虑,而是对 C++ RTTI 的一个加强。C++ 本身的 RTTI 还是太弱了。
RTTI 并不是那么常用的一个技术——不错。很多时候可以用多态+虚函数来代替。另外,RTTI 很可能带来一些很不好的编程习惯,例如:typeof 的并列比较等等。。。C++ Primer Plus 提到过这点。
mechgoukiteng
2004-01-19
打赏
举报
回复
另外,RTTI并不是一个值得经常使用的技术-----除了一些特别的地方,比如双分派
BluntBlade
2004-01-19
打赏
举报
回复
在99年以前C++语言本身并没有涵盖RTTI机制。所以编译器厂商都会搞自己的RTTI库。
这算是历史遗留问题了。
新版的MFC中仍然保留有CRuntimeClass吧,为了保证向下兼容的。
其实按M$的说法,VC++的最新版编译器应该可以实现RTTI机制而不依赖于特定类库了。
zhjie374
2004-01-19
打赏
举报
回复
我代替他问个问题,CRuntimeClass是MFC的类,但是面向对象的C++语言,与编译器无关吧!?
那么在TC3中是否也有一个想CRuntimeClass的东西在作用!!
BluntBlade
2004-01-19
打赏
举报
回复
RTTI可以让程序在运行时期获得与类相关的信息。
使得程序可以进行类识别(用于动态生成)、安全的动态转型等。
Wolf0403
2004-01-19
打赏
举报
回复
struct Base
{ virtual ~Base(){} }
struct Derived
: public Base
{
void Derived_Func() const {}
virtual ~Derived(){}
}
void Function(const Base * _p)
{
// 这里如何知道 _p 是指向一个 Base 还是一个 Derived?用 RTTI -- dynamic_cast
if (NULL != (const Derived * _pD = dynamic_cast<const Derived *>(_p))
_pD->Derived_Func(); // 是指向一个 Derived 对象
else // 指向的是一个 Base 对象
;
}
robbit2002
2004-01-19
打赏
举报
回复
这里的类型指的是面向对象的概念,也就是说每一个继承这个object类型的类,都是这个object类型的子类型,所以在运行时期需要determine这个object类型到底是哪一个子类型。
一种线程消息驱动及
RTTI
分发操作的示例
blog文章:一种线程消息驱动及
RTTI
分发操作的示例
了解魔术般的技巧:
RTTI
初学者指南.flv
了解魔术般的技巧:
RTTI
初学者指南.flv
MFC
RTTI
代码(博客中使用资源)
博客中使用的完整源码【MFC(2)】,仿真了 MFC 的
RTTI
。博客地址: http://blog.csdn.net/raito__/article/details/51684826
RTTI
应用:let's cast.docx
RTTI
应用:let's cast
IDA ClassInformer PlugIn:IDA Pro插件可修复/提取/查看
RTTI
信息-开源
IDA Pro Windows对象
RTTI
vftable finder,fixer和lister插件。 放置结构定义,名称,标签和注释,以使类和结构vftable更具意义(“虚拟功能表”)。 在浏览的窗口中列出找到的
RTTI
结构和C ++类。 在克里斯·伊格尔...
C++ 语言
64,683
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章