高手请回答:1。reinterpret_cast 与static_cast的区别是什么?2。既然有了dynamic_cast什么时候需要用static_cast?

edwardyi 2001-03-22 08:34:00
高手请回答:1。reinterpret_cast 与static_cast的区别是什么?
2。既然有了dynamic_cast什么时候需要用static_cast?
...全文
79 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
joke100 2001-03-22
  • 打赏
  • 举报
回复
reinterpret_cast实际上很少用到,建议尽量不使用.
它是为了映射到一个完全不同类型的意思,这个关键词在我们需要把类型映射回原有类型时用到它.我们映射到的类型仅仅是为了故弄玄虚和其他目的,这是所有映射中最危险的.(这句话是C++编程思想中的原话)...

关于dynamic_cast和static_cast的区别,我在以前的贴子上讲过.
static_cast的应用面比dynamic_cast要广,就是说能用dynamic_cast的地方也可以用static_cast,但是dynamic_cast更安全更严格.

dynamic_cast在执行效率上比static_cast要差一些,但static_cast在更宽上范围内可以完成映射,这种不加限制的映射伴随着不安全性.static_cast覆盖的变换类型除类层次的静态导航以外,还包括无映射变换,窄化变换(这种变换会导致对象切片,丢失信息),用VOID*的强制变换,隐式类型变换等...

一般来讲如果我们确定映射是安全的转换(不破坏对象),我们使用static_cast要快一些.
但一般使用dynamic_cast和static_cast多一些,因为我们经常用到类层次的动态导航嘛...

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧