C++中怎么操作RTTI

本篇文章为大家展示了C++中怎么操作RTTI,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

我们提供的服务有:成都网站制作、成都网站建设、微信公众号开发、网站优化、网站认证、桓台ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的桓台网站制作公司

一、RTTI典型的应用需求

1、类型的识别,即能在运行时判断出某对象、表达式等的类型,能判断它们是基本类型(int、string),还是对象,以及它们区别于其它类型的标识;

2、对象的继承关系的运行时判断;

3、在出错处理、内存诊断等处理时的输出信息;

4、基于字符型名称的运行时对象访问、方法调用;

5、对象的自动保存和读入;

6、基于ID或名称的对象自动生成;

7、环境配置的保存和读入;

8、程序自动生成;

二、C++实现RTTI

RTTI最直接的实现是通过编程语言的语法支持功能,由编译器自动完成,比如:Delphi等语言就提供了Property关键字。C++语言没有这些语法支持功能,因为C++不是一种RAD语言,可以将VB、Delphi、Java等与之进行对比。C++的RTTI是最简单的,只能获得类名和相关的继承信息;而VB、Delphi、Java等确复杂得多,甚至于支持属性名、方法名、事件名等。

标准C++ 提供了typeid() 操作,以得到类型信息,它的参数可以是一个表达式,可以是一个对象、指针或者引用,通过这个方法,可以得到一个指向常type_info对象,里面包含了这个表达式的类型必要的信息。type_info对象提供的功能有如下这些:

1、name(),可以得到一个包含类型信息的字符串,返回如:"int"、"MyClass"等;

2、before(),用来在类型列表中遍历;

3、==操作,用来判断类型是否相同;

VC中的MFC提供的RTTI实现与C++提供的差不多,但是有一些功能上和实现在的差别,但也只是提供了名称和比较功能。
不能说,这是C++或VC中的缺陷,这是由C++的定位决定了,如果C++加上了复杂的RTTI信息,则C++可能就变成了C#或别的什么语言了。是的,C#增加了比较复杂的RTTI信息,谁让他的主设计者就是从Borland公司过去的呢(这也决定了C++在.NET框架中的会被淘汰的命运,因为它在.NET中没有合适的定位,就象VF被淘汰一样)。

上述内容就是C++中怎么操作RTTI,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


标题名称:C++中怎么操作RTTI
标题链接:http://scyanting.com/article/iihjpp.html