C 静态和动态类型铸造
c++ static and dynamic type casting
为什么 static_cast<>()
(也称为downcast)在 dynamic_cast<>()
(也称为upcast)时不会施放类型运行时?两者都用于通过类层次结构前进。它们之间有什么不同,以至于dynamic_cast<>()
有必要施放类型运行时?
两者通常都用于降落(从基础到派生类);升级总是安全的,因此不需要明确的演员。如评论中指出的那样,两者都是等效的(相当于隐式转换),如果您将它们用于升级。
对于降落,static_cast
更快但可能危险,因为它没有执行运行时检查,并且如果转换不有效,则会提供未定义的行为。它还适用于非晶型类型,而dynamic_cast
则需要仅从多态类型中获得的运行时类型信息。
您的介绍性书应详细介绍。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 声明C++具有动态大小的数组类型在 Linux 中工作正常,但不能在 Windows 中工作
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 创建类类型的动态分配数组,其中类不得具有默认构造函数
- 非类类型表达式的静态类型与动态类型之间的差异
- 指针类型类成员的动态强制转换的恒定性是什么?
- 如何使用类型级函数动态创建静态类型?
- C++ 将抽象类型的动态分配对象传递给函数并存储在向量中
- 复合类型的动态数组
- 根据动态选择类型C++模板使用情况
- 类型测试对象的动态数组的这两个声明之间的区别?
- 如何在一个属性中动态存储基元类型
- 动态调用具有不同返回类型的相同命名函数
- 如何在 Visual Studio 2015 中将项目的配置类型动态更改为静态库?
- C++基于子类型动态强制转换结构
- 基元类型动态分配数组的析构函数
- 如何根据要写入的数据类型动态选择文件句柄
- 如何从另一个实例的类型动态实例化新实例?C++