老式显式类型转换
(类型)表达式 c风格的强制类型转换
类型(表达式) 函数式的强制类型转换
1,最开始使用的是c风格的类型转换,但是为了能够使类型转换看起来更像是一个函数调用,因此引入了函数式的类型转换。函数式的类型转换能够像使用一个函数那样去进行转换,比c风格的要更好一些。
2,一般来说,建议以上两种类型转换方式不要使用,改为使用以下四种类型转换方式,如果你拒绝这个提议的话,那么建议使用函数式的类型转换方式。
c++的显示类型转换
旧式的类型转换存在很多问题,因此,在c++中引入了新的类型转换方式(当然,所谓新的也是几十年前的事情了)。
static_cast
dynamic_cast
const_cast
reinterpret_cast
为什么要有新的类型转换
这里主要存在两个问题
第一,老式类型转换没有具体区分到底要怎么转换,是上面四种类型中的哪一种,或者哪几种?好处是,比较方便,因为,使用老式类型转换,你无需具体区分到底使用的是哪一种,只要按照顺序依次试一试能不能转换就行了。坏处是,这种转换是比较危险的,或者可能是用户期望之外的。错误使用了类型转换,但是却没有被发现,依然成功的被转换了,这种行为会带来更大的危害。
第二,老式类型转换是比较难识别的,不管是c风格的也好,函数式的也好,都是只用一个括号就可以了。括号显然比起static_cast<>这样的形式难以识别的多。因此,在复杂一些的表达式中,如果使用了多次类型转换,我们甚至很难去把里面所有的类型转换全部找到,这也会造成很大的困扰。
具体应该使用哪种转换
以前没得选的时候,使用起来自然很容易,因为我们无需纠结使用哪种,直接用就行了。但是有了四种可供你选择以后,这个问题就变的复杂起来了。到底应该用哪一种呢?什么时候应该用什么呢?当然,如果你实在分不清楚的话,那么首先应该尝试一下sta

本文介绍了C++中的四种显式类型转换:static_cast、dynamic_cast、const_cast和reinterpret_cast。这些转换解决了旧式类型转换的问题,如不明确的转换类型和识别难度,并提供了更安全的转换方式。static_cast主要用于允许的隐式转换,dynamic_cast处理继承层次间的转换,const_cast用于添加或移除const限定符,而reinterpret_cast则是一种底层的危险转换。
最低0.47元/天 解锁文章
538

被折叠的 条评论
为什么被折叠?



