社区
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?
...全文
49
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类型到底是哪一个子类型。
TSIA 022.1—2021 工业互联网标识解析顶级节点服务能力成熟度第1部分:模型.pdf
TSIA 022.1—2021 工业互联网标识解析顶级节点服务能力成熟度第1部分:模型
【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)
【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文档围绕多智能体网络中的事件触发一致性控制展开,重点研究如何通过分布式事件驱动控制策略实现多智能体系统在有限时间内达成共识,并提供了基于Matlab的代码实现。文档还涵盖了无人机路径规划、多目标跟踪、图像处理、故障诊断、优化算法等多个科研方向的技术实现与仿真案例,展示了事件触发机制在多智能体协同控制中的高效性与节能优势。核心技术包括分布式控制算法设计、事件触发条件设定、系统收敛性分析及仿真验证。; 适合人群:具备一定自动化、控制理论或计算机背景的研究生、科研人员及从事智能系统开发的工程师,熟悉Matlab编程与基本控制系统建模者更佳。; 使用场景及目标:①研究多智能体系统在资源受限条件下的协同控制问题;②掌握事件触发机制相较于传统周期采样控制的优势;③实现多无人机、机器人等系统的高效协同与节能通信;④为分布式控制算法的仿真与验证提供可复用的代码框架。; 阅读建议:建议结合Matlab代码逐模块理解算法实现流程,重点关注事件触发条件的设计逻辑与系统稳定性证明部分,可进一步拓展至其他分布式优化与协同控制应用场景。
【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)
【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍了基于Matlab的建模与仿真方法。通过对四轴飞行器的动力学特性进行分析,构建了非线性状态空间模型,并实现了姿态与位置的动态模拟。研究涵盖了飞行器运动方程的建立、控制系统设计及数值仿真验证等环节,突出非线性系统的精确建模与仿真优势,有助于深入理解飞行器在复杂工况下的行为特征。此外,文中还提到了多种配套技术如PID控制、状态估计与路径规划等,展示了Matlab在航空航天仿真中的综合应用能力。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于四轴飞行器控制系统的设计与验证,支持算法快速原型开发;②作为教学工具
帮
助理解非线性动力学系统建模与仿真过程;③支撑科研项目中对飞行器姿态控制、轨迹跟踪等问题的深入研究; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注动力学建模与控制模块的实现细节,同时可延伸学习文档中提及的PID控制、状态估计等相关技术内容,以全面提升系统仿真与分析能力。
沱江.zip
三级水系流域矢量数据,数据格式shp格式,坐标系wgs84,真实可靠可打开,放心使用
nuscene-infos-vals
nuscene-infos-vals
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章