RTTI 和 类型转换运算符
来源:互联网 发布:2015年淘宝双11销售额 编辑:程序博客网 时间:2024/05/29 17:11
一、RTTI:Runtime Type Identification的简称
RTTI用于只适用于包含虚函数的类
- dynamic_cast 运算符将使用一个指向基类的指针来生成一个指向派生类的指针。否则,该运算符返回0--->空指针
- typeid运算符返回一个指出对象的类型的值
- type_info结构存储了有关特定类型的信息
1、dynamic_cast : 回答是否可以安全的将对象的地址赋给特定类型的指针
- 语法:super * pm = dynamic_cast<Super *>(subp)
- 判断指针subp类型可否安全的被转换成super*,如果可以,返回对象的地址,否则,返回一个空指针(0)
- 应尽可能使用虚函数,只在必要时使用RTTI
2、typeid运算符:回答两个对象是否是同种类型 ,返回值是bool
- 参数:类名 或者结果为对象的表达式
- typeid运算符返回一个对type_info对象的引用,其中,type_info是在头文件typeinfo中定义的一个类
- 这个类很显然重载了 == 和!=运算符,以方便比较
- 这个类有一个name() 成员函数,该函数返回一个字符串(内容随厂商而定),一般是类的名称
三、类型转换运算符
通用的格式:
<span style="white-space:pre"></span>###_cast <type_name> (expression)
- dynamic_cast 使得能够在类层次结构中进行向上转换
- const_cast 改变值为const或volatile ,也就是说只允许两个类型的const或volatile的值不同外,其他属性必须相同,否则转换出错
- static_cast 仅当type_name 可以隐式转换为expression 或者 expression 可以隐式转换为type_name时,才是合法的
- 即基类向派生类转换和派生类向基类转换都是合法的,但是向一个无关的类转换,是非法的
- reinterpret_cast 设计底层编程技术。
0 0
- RTTI 和 类型转换运算符
- RTTI和类型转换
- C++ 四个强制类型转换符和RTTI
- C++强制类型转换和RTTI
- 运算符和类型转换
- 运算符和强制类型转换
- 类型转换和运算符优先级问题
- 运算符和类型强制转换
- (七)运算符和类型转换
- 数据类型和运算符(类型转换)
- 重载,类型转换和运算符
- c++的类型转换和运算符
- 类型转换和各种运算符
- Java运算符和类型转换
- 14-重载运算符和类型转换
- 动态类型识别RTTI与Dynamic_cast运算符
- 类型转换运算符
- 类型转换运算符
- Unity3d 如何利用Visual Studio·调试
- 线程同步 各个关键字和方法的使用
- Struts1.x系列教程(5):HTML标签库
- 腾讯C++程序员面试题
- 给软件添加版本号
- RTTI 和 类型转换运算符
- 老黄历
- 图解SSH框架配置步骤
- Xcode_更新时更换app ID
- ViewPager 详解(一)---基本入门
- 彻底解决Android SDK Manager更新慢或无法更新的问题
- java字符串写入文件及换行问题
- 常用正则表达式
- iOS开发 KVC和KVO