C 静态和动态类型铸造

c++ static and dynamic type casting

本文关键字:类型 动态 静态      更新时间:2023-10-16

为什么 static_cast<>()(也称为downcast)在 dynamic_cast<>()(也称为upcast)时不会施放类型运行时?两者都用于通过类层次结构前进。它们之间有什么不同,以至于dynamic_cast<>()有必要施放类型运行时?

两者通常都用于降落(从基础到派生类);升级总是安全的,因此不需要明确的演员。如评论中指出的那样,两者都是等效的(相当于隐式转换),如果您将它们用于升级。

对于降落,static_cast更快但可能危险,因为它没有执行运行时检查,并且如果转换不有效,则会提供未定义的行为。它还适用于非晶型类型,而dynamic_cast则需要仅从多态类型中获得的运行时类型信息。

您的介绍性书应详细介绍。