我读过static_cast
在编译时dynamic_cast
发生,在运行时发生,因此比慢static_cast
。Adynamic_cast
可以返回null ptr(与指针一起使用时),也可以引发不良的强制转换异常。我的问题是什么reinterpret_cast
,const_cast
它们是在编译时还是在运行时发生?我认为解释转换在运行时发生,因为它的行为就像dynamic_cast
指示转换是否成功一样。我对么 ?那const_cast是那个编译时间呢?
动态类型转换是唯一需要在运行时“计算”的类型。所有其他转换都在编译时计算。
static_cast
是固定的函数,取决于您正在转换FROM和TO的类型。const_cast
实际上,a的机器代码不过是允许将const值传递为no-const,反之亦然。因此可以在编译时解决reinterpret_cast
,机器代码也可以在编译时解析。一旦它只是“用正在寻找B型的人的眼睛看一下指向A型的指针”。dynamic_cast
需要解决虚拟表和调整基于类型FROM和TO的虚方法正确的地址。这就是为什么它更复杂!本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句