C++中如何全面掌握RTTI与四种类型转换的深层机制及其相互关系?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3425个文字,预计阅读时间需要14分钟。
前言:RTTI 是 Run Time Type Information 的缩写,从字面上理解就是执行时期的类型信息。其重要作用是动态地判断执行时期的类型。
并非说这篇文章是关于 RTTI,而是讨论了使用 RTTI 的四种类型转换。
前言
RTTI 是 Run Time Type Information 的缩写,从字面上来理解就是执行时期的类型信息,其重要作用就是动态判别执行时期的类型。
并不是说这篇文章是RTTI,和用于RTTI的四种类型转换,而是介绍RTTI,再介绍一下4种类型转换,因为RTTI有用到其中一种类型转换,所以相当于两篇文章写在一起。
实际上 RTTI 用到的是typeid() 和 dynamic_cast()。
为什么会有RTTI?
C++是一种静态类型语言,其数据类型是在编译期就确定的,不能在运行时更改。然而由于面向对象程序设计中多态性的要求,C++中的指针或引用(Reference)本身的类型,可能与它实际代表(指向或引用)的类型并不一致。有时我们需要将一个多态指针转换为其实际指向对象的类型,就需要知道运行时的类型信息,这就产生了运行时类型识别的要求。
实事求是地讲,RTTI是有用的。 但因为一些理论上及方法论上的原因,它破坏了面向对象的纯洁性。
首先, 它破坏了抽象,使一些本来不应该被使用的方法和属性被不正确地使用。
本文共计3425个文字,预计阅读时间需要14分钟。
前言:RTTI 是 Run Time Type Information 的缩写,从字面上理解就是执行时期的类型信息。其重要作用是动态地判断执行时期的类型。
并非说这篇文章是关于 RTTI,而是讨论了使用 RTTI 的四种类型转换。
前言
RTTI 是 Run Time Type Information 的缩写,从字面上来理解就是执行时期的类型信息,其重要作用就是动态判别执行时期的类型。
并不是说这篇文章是RTTI,和用于RTTI的四种类型转换,而是介绍RTTI,再介绍一下4种类型转换,因为RTTI有用到其中一种类型转换,所以相当于两篇文章写在一起。
实际上 RTTI 用到的是typeid() 和 dynamic_cast()。
为什么会有RTTI?
C++是一种静态类型语言,其数据类型是在编译期就确定的,不能在运行时更改。然而由于面向对象程序设计中多态性的要求,C++中的指针或引用(Reference)本身的类型,可能与它实际代表(指向或引用)的类型并不一致。有时我们需要将一个多态指针转换为其实际指向对象的类型,就需要知道运行时的类型信息,这就产生了运行时类型识别的要求。
实事求是地讲,RTTI是有用的。 但因为一些理论上及方法论上的原因,它破坏了面向对象的纯洁性。
首先, 它破坏了抽象,使一些本来不应该被使用的方法和属性被不正确地使用。

