指针类型转换的本质是什么?

qq_29817615 2016-04-25 12:05:07
个人觉得 c/c++运行时候是不会进行类型检查的,指针类型转换 只是为了绕过编译器的检查,是没有任何开销的!
在运行时 是没有指针类型转换对应的 二进制码的。
是不是这样的?

...全文
433 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40162781 2018-05-04
  • 打赏
  • 举报
回复
dynamic_cast还是有挺大开销的
跃2.0 2018-05-02
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
想了解本质请看对应汇编指令。
对喔,去瞅瞅
lm_whales 2016-04-26
  • 打赏
  • 举报
回复
C++转换会有运行时代码的,不过更多的都在编译阶段安排好了 运行时代码很少 例如 整形转换(short-->int),整形到浮点型转换 而dynamic_cast 是运行时转换,需要类型的运行时信息 隐式转换中 虚基类 和 派生类的转换 是需要运行时转换的 而 多继承转换可能需要移动指针 C++的转换是五花八门的。 需不需要运行时进行,编译器根据转换前后两个对象(包括指针,引用)的类型了来安排
lm_whales 2016-04-25
  • 打赏
  • 举报
回复
四大C++转换 有三个转换成功基本没有开销 static_cast 成功 没有开销,或者很小开销,可能有安全问题,失败 没开销,只是编译不过去 reinterpret_cast 基本没开销,只是未必安全,必须自行决定安全与否 const_cast 没开销,失败编译不了,本身就是不那么安全的,需要自行确定是否使用 dynamic_cast 动态转换成功失败都有开销,大小之说 这个转换是安全的 只是失败要特别处理,(结果为nullptr,或者 NULL,0)
小灸舞 2016-04-25
  • 打赏
  • 举报
回复
指针类型强制转换实际上就是指定你要如何解析这段内存。 声明不同类型的指针变量既是规定了该变量结合指针运算符时读取内存中的字节数,同样在指针移动和指针的运算时(加、减)在内存中移动的最小字节数。 无论什么类型的指针变量,在内存中本质上都是一样的,都是一个整数值的地址值;而这个不同的类型仅仅是向系统说明该变量在内存中占据字节的数目,如:字符型的指针变量在内存中占据一个字节、一个整形的指针变量在内存中占据四个字节等等。
赵4老师 2016-04-25
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:] 想了解本质请看对应汇编指令。
想了解本质请看指针类型转换语句对应的汇编指令。[/quote] 想了解本质请在VS IDE中调试设断点在指针类型转换语句,按ALt+8查看其对应的汇编指令。
赵4老师 2016-04-25
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
想了解本质请看对应汇编指令。
想了解本质请看指针类型转换语句对应的汇编指令。
七擒关羽 2016-04-25
  • 打赏
  • 举报
回复
数据类型与数据的关系,当需要处理数据时,需要体现一种数据类型,指针类型是指包含数据地址以及数据类型的一种标识。 那么指针类型转换,数据地址不变,但数据类型变化了。
gig886 2016-04-25
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
想了解本质请看对应汇编指令。
这个回答简直无情~
赵4老师 2016-04-25
  • 打赏
  • 举报
回复
想了解本质请看对应汇编指令。
qq_29817615 2016-04-25
  • 打赏
  • 举报
回复
引用 1 楼 qq423399099 的回复:
指针类型强制转换实际上就是指定你要如何解析这段内存。 声明不同类型的指针变量既是规定了该变量结合指针运算符时读取内存中的字节数,同样在指针移动和指针的运算时(加、减)在内存中移动的最小字节数。 无论什么类型的指针变量,在内存中本质上都是一样的,都是一个整数值的地址值;而这个不同的类型仅仅是向系统说明该变量在内存中占据字节的数目,如:字符型的指针变量在内存中占据一个字节、一个整形的指针变量在内存中占据四个字节等等。
我也是这么理解的 ,意思就是 指针变量 的类型 只对编译器编译的时候有作用, 这个转换 没有任何开销 不像一些强类型 语言 转换时候 有开销。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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