dynamic_cast 与static_cast的区别

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/30 21:42:48
dynamic_cast 与static_cast的区别
xS͎P~:Ӕ $]pBk*@+0-8#)%s/yOl&]~|?4Iz~I:{Y=K)A5s|.oT?zrfp6.ycm){nhPPiαXO>V?m_b yPҬbwɭ48`f=a8"H%Z5YHB Iϰ>% . GgXj1{* yz /ʋ<. 5: ,5, 8G?TF5*% R*հ;R¡ыSEGBg1ѣ5M<nѰ7Z6`.FI(*l:I\͒Q֠?"Ь!FKh,.Ѐ1vߔLd< )iVjsH!~}=I.NԮDF~iG -V=h+@9/=vo#ЅfVS%L7ؿLe'L49w6

dynamic_cast 与static_cast的区别
dynamic_cast 与static_cast的区别

dynamic_cast 与static_cast的区别
一个动态转换,一个是静态转换.一般情况下使用static_case
就可以了.
同时,这个只有在高版本的C++编译器中才能识别.
dynamic_cast是试探映射,如dynamic_cast*pB意思是“我希望它是A*,并打算要求它是”.它通常被称为类层次的动态导航.
而static_cast通常可用于类层次的静态导航,无映射变换,窄化变换(会丢失信息)等等,static_cast的应用要广一些,但如前所提到的,在类层次导航变换中我们应该使用前者,因为后者static_cast可能意味着冒险(比如变换时类似于强制转换一样丢失信息).但是在一个类层次中没有虚函数或者我们确定有其他允许我们安全向下映射的信息则后者static_cast更快一些.