static_castconst_cast 、static_cast 和 reinterpret_cast 分别怎样使用

static_cast  时间:2021-06-25  阅读:()

为什么 static_cast应用于指针的转换没有太大意义

因为转换本就是一种欺骗编译器的手段,如把一个指针强转为A*,只是你告诉编译器把这指针指向的地址后sizeof(A)个字节的内存当作A对象来解析。

因此指针强转很容易出现非法内存访问。

例如(在小端机上): int a = 10, b= 20; int *pb = &b; double *pD = (double*)pb; *pD = 1.2346656; cout << b<<endl; 输出结果成了乱码:-1218973566 这种转换即是所谓的c风格转换,很不安全。

static_cast用来取代c风格强转,加入了类型检查,多少加入了一点安全性,但仍然无法保证指针强转的安全。

static_cast能把空指针转换成目标类型的空指针、在父子类指针见转换。

然而空指针转换一般很少用,而类族父类与子类的强转用dynamic_cast,所以它在指针转换上没什么用。

&和static_cast<void *>的区别

&运算符是直接取地址,而static_cast是将b先转换成void*,然后再输出这个指针的地址,这个过程中涉及到C++非常底层有关指针地址运算的东西。

个人觉得如果不是十分必要,用不着深抠,理解会用指针及其地质即可。

“数据类型的转换 比如double型 的数据在内存中占4个字节(abcd),转换成void *时,将这4个字节中的数据复制到另外4个字节(1234)中去,是不是这样的” 不是的。

当对double类型进行强制转换的时候,内存本身的东西是不会变化的,只是把指向该处的指针装置转换成(void*),不会发生任何复制的操作. 我用下面的代码进行了一下测试: double a=10.0; double *b=&a; cout<<"&a = "<<&a<<" static_cast(&a) = "<(&a)<(b) = "<(b)<(&a) = 0012FE94 b = 0012FE94 static_cast(b) = 0012FE94 我用的是vc2003的编译器。

不知lz用的什么编译器?

请问在C++里static_cast是什么意思?

强制转化,就是把一个类型的变量a强制赋值给另外类型的变量b,如果能成功,变量b就具有一个值,如果不能成功就抛出一个错误。

建议用搜索一下 static_cast 这个词,你能学到更多东西。

const_cast 、static_cast 和 reinterpret_cast 分别怎样使用

const_cast 将一个常量的转化为非常量的 static_cast 也是数据类型转换用的,但是安全性由自己保证 reinterpret_cast 好像是一种二进制形式的类型转换 再送一dynamic_cast 作用也是类型转换,不过他提供了运行时安全检查,如果类型不匹配你还强制转换,结果将是一个空指针,并抛出异常。

ps:static_cast和dynamic_cast 是很常用的,static_cast的缺点没有运行时类型检查,dynamic_cast有,但是伴随的一些效率损耗。

有误请纠正,谢谢。

PhotonVPS:$4/月,KVM-2GB/30GB/2TB/洛杉矶&达拉斯&芝加哥等

很久没有分享PhotonVPS的消息,最近看到商家VPS主机套餐有一些更新所以分享下。这是一家成立于2008年的国外VPS服务商,Psychz机房旗下的站点,主要提供VPS和独立服务器等,数据中心包括美国洛杉矶、达拉斯、芝加哥、阿什本等。目前,商家针对Cloud VPS提供8折优惠码,优惠后最低2G内存套餐每月4美元起。下面列出几款主机配置信息。CPU:1core内存:2GB硬盘:30GB NVm...

半月湾($59.99/年),升级带宽至200M起步 三网CN2 GIA线路

在前面的文章中就有介绍到半月湾Half Moon Bay Cloud服务商有提供洛杉矶DC5数据中心云服务器,这个堪比我们可能熟悉的某服务商,如果我们有用过的话会发现这个服务商的价格比较贵,而且一直缺货。这里,于是半月湾服务商看到机会来了,于是有新增同机房的CN2 GIA优化线路。在之前的文章中介绍到Half Moon Bay Cloud DC5机房且进行过测评。这次的变化是从原来基础的年付49....

80VPS:香港服务器月付420元;美国CN2 GIA独服月付650元;香港/日本/韩国/美国多IP站群服务器750元/月

80vps怎么样?80vps最近新上了香港服务器、美国cn2服务器,以及香港/日本/韩国/美国多ip站群服务器。80vps之前推荐的都是VPS主机内容,其实80VPS也有独立服务器业务,分布在中国香港、欧美、韩国、日本、美国等地区,可选CN2或直连优化线路。如80VPS香港独立服务器最低月付420元,美国CN2 GIA独服月付650元起,中国香港、日本、韩国、美国洛杉矶多IP站群服务器750元/月...

static_cast为你推荐
财务系统软件免费财务软件有哪些?ae序列号ae序列号ico监管ICO为什么被叫停flash实例Flash元件和实例的概念及关系?无处不在的意思,幸福无处不在,最适合才是最好是什么意思qq管家官网腾讯手机管家官网防盗页面地址是什么?知识百科java程序员招聘java程序员学出来工作好不好找,工资咋样?gas是什么意思gc是什么意思啊?爱码验证码平台接码验证码接收平台如何使用?手机在线客服vivo人工客服电话多少
长沙域名注册 vultr美国与日本 缓存服务器 56折 seovip 福建天翼加速 我爱水煮鱼 免空 国外免费全能空间 免费个人空间 爱奇艺会员免费试用 中国电信宽带测速器 申请网站 英国伦敦 杭州电信 广东服务器托管 美国vpn代理 neobux ddos攻击工具 西安服务器机柜 更多