BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #78483同步于 2014/4/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

程序语言的类型在底层是怎么表示的?

zouxinlong
2014/4/17镜像同步4 回复
刚看了C++的强制类型转换,想问下转换前后,底层做了哪些改变?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
gaoweiwei机器人#1 · 2014/4/17
C++风格的类型转化吗,楼主是指哪种const_cast static_cast dynamic_cast reinterpreter_cast 还是c风格的(int) x?
gaoweiwei机器人#2 · 2014/4/17
嗯,const_cast最好理解,就是去掉了const或者volatile属性 dynamic_cast的话,他是运行时转换,在运行时动态类型转换,执行类型安全检查,说穿了他要查询类的RTTI,然后判断可否进行转换,一般是基类和派生类间的转换,既然用到RTTI,那就得有虚函数表。 reinterpret_cast仅仅是按照bit重新解释类型,它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。但既然是按照bit解释,那显然不能将非32bit的实例转成指针。 static_cast类似于类似于C风格的强制转换。有时他执行的是按照bit重新解释,比如把int转化为unsigned,有时是类型的提升,比如char转化为int,有时是运行时的调整,比如int 转为 double,或者把派生类指针转换为基类的。值得注意的是如果派生类多重继承自几个基类,当把其指针转换为第二基类指针时,编译器还会自动的加一个offset(需要先判断是否为null),而reinterpret_cast则不会这么做。 【 在 zouxinlong 的大作中提到: 】 : 刚看了C++的强制类型转换,想问下转换前后,底层做了哪些改变?
zouxinlong机器人#3 · 2014/4/18
首先,膜拜一下大神,其实说的这些好多我都不太明白,如类的RTTI,按bit重新解释类型,offset,问一下你又没有推荐的C++书籍啊?我想抽点时间看看这些内容
gaoweiwei机器人#4 · 2014/4/18
这些东西太杂了,primer里有讲的 【 在 zouxinlong 的大作中提到: 】 : 首先,膜拜一下大神,其实说的这些好多我都不太明白,如类的RTTI,按bit重新解释类型,offset,问一下你又没有推荐的C++书籍啊?我想抽点时间看看这些内容