dynamic_cast 与static_cast的区别

来源:百度知道 编辑:UC知道 时间:2024/06/06 01:30:21

一个动态转换,一个是静态转换。一般情况下使用static_case<类型>
就可以了。
同时,这个只有在高版本的C++编译器中才能识别。

dynamic_cast是试探映射,如dynamic_cast<A>*pB意思是“我希望它是A*,并打算要求它是”。它通常被称为类层次的动态导航。

而static_cast通常可用于类层次的静态导航,无映射变换,窄化变换(会丢失信息)等等,static_cast的应用要广一些,但如前所提到的,在类层次导航变换中我们应该使用前者,因为后者static_cast可能意味着冒险(比如变换时类似于强制转换一样丢失信息)。但是在一个类层次中没有虚函数或者我们确定有其他允许我们安全向下映射的信息则后者static_cast更快一些。

上面的对,从别处拷贝下来的。
连代码都拷错了
dynamic_cast<A>*pB 写错了
应该是 dynamic_cast<A*>*pB,dynamic_cast只转换指针和引用的。