首页 > 产品 > 知识 > RTTI,MFC的RTTI与C的RTTI有什么区别

RTTI,MFC的RTTI与C的RTTI有什么区别

来源:整理 时间:2023-09-05 09:02:08 编辑:智能门户 手机版

本文目录一览

1,MFC的RTTI与C的RTTI有什么区别

1、mfc比c++的rtti出现的时间早,微软不得不自己搞一套。2、c++的rtti还没有实现序列化(把类型信息存盘),这样就无法动态创建,而mfc要直持动态创建和序列化。

MFC的RTTI与C的RTTI有什么区别

2,c运行时类型识别

我记得mfc里有讲这个。rtti运行时类型识别RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信息。它提供了运行时确定对象类型的方法。本文将简略介绍 RTTI 的一些背景知识、描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI;本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和 dynamic_cast。 其实,RTTI 在C++中并不是什么新的东西,它早在十多年以前就已经出现了。但是大多数开发人员,包括许多高层次的C++程序员对它并不怎么熟悉,更不用说使用 RTTI 来设计和编写应用程序了。 一些面向对象专家在传播自己的设计理念时,大多都主张在设计和开发中明智地使用虚拟成员函数,而不用 RTTI 机制。但是,在很多情况下,虚拟函数无法克服本身的局限。每每涉及到处理异类容器和根基类层次(如 MFC)时,不可避免要对对象类型进行动态判断,也就是动态类型的侦测。如何确定对象的动态类型呢?答案是使用内建的 RTTI 中的运算符:typeid 和 dynamic_cast。...详见:http://www.vckbase.com/document/viewdoc/?id=653

c运行时类型识别

3,C中有rtti机制吗

楼上两个都在搞笑。第一个谈java文不对题;第二个根本没搞清楚什么叫做RTTI,你那叫多态,和RTTI还差得远呢。RTTI,运行时类型信息,代表你可以在运行时动态获取某个类型的信息。C++支持RTTI,但是支持的很有限。而且许多C++编译器默认是不打开RTTI的,需要手工指定(比如VC6.0的编译器)C++的RTTI只提供了几个最基本的功能:1、安全的downcast,当你使用dynamic_cast动态从基类指针转换成子类指针的时候,RTTI能保证安全的转换,如果类型不符则抛出一个bad_cast异常。2、动态获取一个对象的类名称。你可以使用typeid获得一个type_info对象,这个对象保存了这个类型的最基本信息,比如名称。3、在继承树上遍历,使用typeid获得的type_info对象提供一个before方法,可以用于查找这个类型的基类。其它更复杂的比如反射和动态类型扩充等功能C++都没有提供支持。而且即使是C++标准规定的以上那些基本功能,不同的编译器实现都有较大的差异,有些编译器实现的不是很好。总之,C++是一个强调静态特性的语言,而动态特性则相对弱很多,和后来那些纯OOP语言比如java、C#、JS、Python等比起来,动态特性是很不值一提的。 所以实际项目中使用C++的RTTI也非常少,最多就是使用它的dynamic_cast来进行安全的向下转换了,别的方面基本上都不用。

C中有rtti机制吗

4,c的RTTI机制动态确定对象类型啥意思呀还有静态的

所谓静态的,是指编译期就确定的类型信息RTTI是运行时的,是动态的
楼上两个都在搞笑。第一个谈java文不对题;第二个根本没搞清楚什么叫做rtti,你那叫多态,和rtti还差得远呢。rtti,运行时类型信息,代表你可以在运行时动态获取某个类型的信息。c++支持rtti,但是支持的很有限。而且许多c++编译器默认是不打开rtti的,需要手工指定(比如vc6.0的编译器)c++的rtti只提供了几个最基本的功能:1、安全的downcast,当你使用dynamic_cast动态从基类指针转换成子类指针的时候,rtti能保证安全的转换,如果类型不符则抛出一个bad_cast异常。2、动态获取一个对象的类名称。你可以使用typeid获得一个type_info对象,这个对象保存了这个类型的最基本信息,比如名称。3、在继承树上遍历,使用typeid获得的type_info对象提供一个before方法,可以用于查找这个类型的基类。其它更复杂的比如反射和动态类型扩充等功能c++都没有提供支持。而且即使是c++标准规定的以上那些基本功能,不同的编译器实现都有较大的差异,有些编译器实现的不是很好。总之,c++是一个强调静态特性的语言,而动态特性则相对弱很多,和后来那些纯oop语言比如java、c#、js、python等比起来,动态特性是很不值一提的。 所以实际项目中使用c++的rtti也非常少,最多就是使用它的dynamic_cast来进行安全的向下转换了,别的方面基本上都不用。

5,java中传统的RTTI和反射的区别是什么

在java中,有两种RTTI的方式,一种是传统的,即假设在编译时已经知道了所有的类型;还有一种,是利用反射机制,在运行时再尝试确定类型信息。严格的说,反射也是一种形式的RTTI,不过,一般的文档资料中把RTTI和反射分开,因为一般的,大家认为RTTI指的是传统的RTTI,通过继承和多态来实现,在运行时通过调用超类的方法来实现具体的功能(超类会自动实例化为子类,或使用instance of)。传统的RTTI有3种实现方式:向上转型或向下转型(upcasting and downcasting),在java中,向下转型(父类转成子类)需要强制类型转换Class对象(用了Class对象,不代表就是反射,如果只是用Class对象cast成指定的类,那就还是传统的RTTI)instanceof或isInstance()传统的RTTI与反射最主要的区别,在于RTTI在编译期需要.class文件,而反射不需要。传统的RTTI使用转型或Instance形式实现,但都需要指定要转型的类型,比如:public void rtti(Object obj) Toy toy = Toy(obj); // Toy toy = Class.forName("myblog.rtti.Toy") // obj instanceof Toy}注意其中的obj虽然是被转型了,但在编译期,就需要知道要转成的类型Toy,也就是需要Toy的.class文件。相对的,反射完全在运行时在通过Class类来确定类型,不需要提前加载Toy的.class文件。反射那到底什么是反射(Reflection)呢?反射有时候也被称为内省(Introspection),事实上,反射,就是一种内省的方式,Java不允许在运行时改变程序结构或类型变量的结构,但它允许在运行时去探知、加载、调用在编译期完全未知的class,可以在运行时加载该class,生成实例对象(instance object),调用method,或对field赋值。这种类似于“看透”了class的特性被称为反射(Reflection),我们可以将反射直接理解为:可以看到自己在水中的倒影,这种操作与直接操作源代码效果相同,但灵活性高得多。关于Java的反射API,没必要去记忆,可以在任何JDK API中查询即可

6,java中的RTTI是什么意思

Runtime Type Information 运行时类型信息
在java中,有两种rtti的方式,一种是传统的,即假设在编译时已经知道了所有的类型;还有一种,是利用反射机制,在运行时再尝试确定类型信息。严格的说,反射也是一种形式的rtti,不过,一般的文档资料中把rtti和反射分开,因为一般的,大家认为rtti指的是传统的rtti,通过继承和多态来实现,在运行时通过调用超类的方法来实现具体的功能(超类会自动实例化为子类,或使用instance of)。传统的rtti有3种实现方式:向上转型或向下转型(upcasting and downcasting),在java中,向下转型(父类转成子类)需要强制类型转换class对象(用了class对象,不代表就是反射,如果只是用class对象cast成指定的类,那就还是传统的rtti)instanceof或isinstance()传统的rtti与反射最主要的区别,在于rtti在编译期需要.class文件,而反射不需要。传统的rtti使用转型或instance形式实现,但都需要指定要转型的类型,比如:public void rtti(object obj) toy toy = toy(obj); // toy toy = class.forname("myblog.rtti.toy") // obj instanceof toy}注意其中的obj虽然是被转型了,但在编译期,就需要知道要转成的类型toy,也就是需要toy的.class文件。相对的,反射完全在运行时在通过class类来确定类型,不需要提前加载toy的.class文件。反射那到底什么是反射(reflection)呢?反射有时候也被称为内省(introspection),事实上,反射,就是一种内省的方式,java不允许在运行时改变程序结构或类型变量的结构,但它允许在运行时去探知、加载、调用在编译期完全未知的class,可以在运行时加载该class,生成实例对象(instance object),调用method,或对field赋值。这种类似于“看透”了class的特性被称为反射(reflection),我们可以将反射直接理解为:可以看到自己在水中的倒影,这种操作与直接操作源代码效果相同,但灵活性高得多。关于java的反射api,没必要去记忆,可以在任何jdk api中查询即可
文章TAG:mfcrtti有什么什么RTTI

最近更新

  • sap 数据迁移,SAP数据sap 数据迁移,SAP数据

    sapgui75064bit是一个全新的erp系统客户端。这个程序的主要功能是帮助企业用户实现sap服务器访问和-2迁移服务,这些强大的解决方案可以帮助用户提供可用的数据仓库、-2迁移master数据管.....

    知识 日期:2023-09-05

  • pads下载,哪里可下载Pads的软件啊急pads下载,哪里可下载Pads的软件啊急

    哪里可下载Pads的软件啊急2,pads2007下载地址3,pads最高版本4,pads95下载5,skype免费下载6,itunes安装软件下载itunes软件下载目录1,哪里可下载Pads的软件啊急www.duote.com可以下载免费得软.....

    知识 日期:2023-09-05

  • 佳佳机器人穿内裤吗,机器人佳佳主持节目视频佳佳机器人穿内裤吗,机器人佳佳主持节目视频

    模拟机智能机器人美女的牌子不错佳佳。穿着汉服,佳佳被很多观众搭讪,佳佳对一些问题进行了机智的回答,中科大机器人"女神佳佳"长期以来,日本人形机器人技术一直领先世界,中国作为后起之秀也.....

    知识 日期:2023-09-05

  • iphone手机自动锁屏时间设置,如何破解iphone手机锁屏密码呢iphone手机自动锁屏时间设置,如何破解iphone手机锁屏密码呢

    iphone锁屏Time设置在哪里输入Apple手机设置,选择显示屏和亮度,勾选自动。Apple锁屏Time设置Apple锁屏Time设置方法如下:手机:iphone13系统,apple手机锁屏时间是指自动锁屏之后多久。1、.....

    知识 日期:2023-09-05

  • 模板匹配,Matlab 模板匹配相关方面公式模板匹配,Matlab 模板匹配相关方面公式

    Matlab模板匹配相关方面公式2,急求数字图像处理中的模板匹配的基本步骤是什么设计33,matlab模板匹配优缺点4,templatematchingtempletmatching是什么意思5,如何用labview模板匹配工具得到.....

    知识 日期:2023-09-05

  • ssd用哪根数据线ssd用哪根数据线

    ssd硬盘可以用SATA2的硬盘线吗?ssd硬盘可以用SATA2硬盘线,但是最好用SATA3数据线。您的主板可能还不支持AHCI,在BIOS中查找其他菜单,这个主板在ConfigureSATAas目录下的总线带宽不好,如果换.....

    知识 日期:2023-09-05

  • 防孤岛保护,什么是孤岛保护防孤岛保护,什么是孤岛保护

    什么是孤岛保护2,防孤岛技术主动被动是怎么定义的3,什么是逆变器的防孤岛效应4,光伏防孤岛装置多少钱5,光伏防孤岛装置6,光伏专用防孤岛保护装置1,什么是孤岛保护孤岛保护分为主动式孤岛保护.....

    知识 日期:2023-09-05

  • 探索机器人进陵墓,秦始皇陵墓机器人探索机器人进陵墓,秦始皇陵墓机器人

    机器人探索模式攻略游戏崩溃3机器人探索模式怎么玩?原神探索Entry机器人内法探索Entry机器人内法如下:完成详细攻略:1。第一,我们找到npc,找到位置后,跟他谈,然后开任务,崩3机器人探索方法到.....

    知识 日期:2023-09-05