本篇文章为大家展示了c++中怎么操作RTTI,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、RTTI典型的应用需求 类型的识别,即能在运行时判断出某对象、表达式等的类型,能判断它们是基本类型(in
本篇文章为大家展示了c++中怎么操作RTTI,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、RTTI典型的应用需求
类型的识别,即能在运行时判断出某对象、表达式等的类型,能判断它们是基本类型(int、string),还是对象,以及它们区别于其它类型的标识;
对象的继承关系的运行时判断;
在出错处理、内存诊断等处理时的输出信息;
基于字符型名称的运行时对象访问、方法调用;
对象的自动保存和读入;
基于ID或名称的对象自动生成;
环境配置的保存和读入;
程序自动生成;
二、C++实现RTTI
RTTI最直接的实现是通过编程语言的语法支持功能,由编译器自动完成,比如:Delphi等语言就提供了Property关键字。C++语言没有这些语法支持功能,因为C++不是一种RAD语言,可以将VB、Delphi、Java等与之进行对比。C++的RTTI是最简单的,只能获得类名和相关的继承信息;而VB、Delphi、Java等确复杂得多,甚至于支持属性名、方法名、事件名等。
标准C++ 提供了typeid() 操作,以得到类型信息,它的参数可以是一个表达式,可以是一个对象、指针或者引用,通过这个方法,可以得到一个指向常type_info对象,里面包含了这个表达式的类型必要的信息。type_info对象提供的功能有如下这些:
name(),可以得到一个包含类型信息的字符串,返回如:"int"、"MyClass"等;
before(),用来在类型列表中遍历;
==操作,用来判断类型是否相同;
VC中的MFC提供的RTTI实现与C++提供的差不多,但是有一些功能上和实现在的差别,但也只是提供了名称和比较功能。
不能说,这是C++或VC中的缺陷,这是由C++的定位决定了,如果C++加上了复杂的RTTI信息,则C++可能就变成了C#或别的什么语言了。是的,C#增加了比较复杂的RTTI信息,谁让他的主设计者就是从Borland公司过去的呢(这也决定了C++在.net框架中的会被淘汰的命运,因为它在.NET中没有合适的定位,就象VF被淘汰一样)。
上述内容就是C++中怎么操作RTTI,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网其他教程频道。
--结束END--
本文标题: C++中怎么操作RTTI
本文链接: https://lsjlt.com/news/290973.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0