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有,但是伴随的一些效率损耗。

有误请纠正,谢谢。

georgedatacenter:美国VPS可选洛杉矶/芝加哥/纽约/达拉斯机房,$20/年;洛杉矶独立服务器39美元/月

georgedatacenter怎么样?georgedatacenter这次其实是两个促销,一是促销一款特价洛杉矶E3-1220 V5独服,性价比其实最高;另外还促销三款特价vps,大家可以根据自己的需要入手。georgedatacenter是一家成立于2019年的美国vps商家,主营美国洛杉矶、芝加哥、达拉斯、新泽西、西雅图机房的VPS、邮件服务器和托管独立服务器业务。georgedatacen...

PIGYUN:美国联通CUVIPCUVIP限时cuvip、AS9929、GIA/韩国CN2机房限时六折

pigyun怎么样?PIGYunData成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,目前商家提供香港CN2线路、韩国cn2线路、美西CUVIP-9929、GIA等线路优质VPS,基于KVM虚拟架构,商家采用魔方云平台,所有的配置都可以弹性选择,目前商家推出了七月优惠,韩国和美国所有线路都有相应的促销,六折至八折,性价比不错。点击进入:PIGYun官方网站地址PIGYUN优惠...

BuyVM迈阿密KVM上线,AMD Ryzen 3900X+NVMe硬盘$2/月起

BuyVM在昨天宣布上线了第四个数据中心产品:迈阿密,基于KVM架构的VPS主机,采用AMD Ryzen 3900X CPU,DDR4内存,NVMe硬盘,1Gbps带宽,不限制流量方式,最低$2/月起,支持Linux或者Windows操作系统。这是一家成立于2010年的国外主机商,提供基于KVM架构的VPS产品,数据中心除了新上的迈阿密外还包括美国拉斯维加斯、新泽西和卢森堡等,主机均为1Gbps带...

static_cast为你推荐
离线包离线地图,离线导航包有什么区别bean是什么意思FServiceID是什么意思旺旺群发软件旺旺群发软件哪个比较好4k超高清视频下载哪里有4K片源下载啊?补充:刚入手了一个4k电视盒,小美盒子V9,说是支持4k。正好我的电视机是4k的,想知道哪里有得下载呢?有朋友说我傻,现在基本上没有4k片源下载,而且不知道什么时候才有。等到流行的时候也许这个机器又淘汰啦!我该怎么办啊?特斯拉model3降价小鹏P7和特斯拉Model 3,买哪个更加划算?ocr软件下载哪个图片转文字软件比较好用?东兴证券网站东兴证券超强版下载gbk内码怎么查GBK内码?怎么查微信注册时间怎么查看自己的微信号用了多久flash序列号急求flash序列号
双线主机租用 cn域名备案 宕机监控 彩虹ip 铁通流量查询 卡巴斯基永久免费版 灵动鬼影 电子邮件服务器 免费防火墙 美国免费空间 重庆双线服务器托管 国外视频网站有哪些 便宜空间 789 注册阿里云邮箱 万网主机 如何登陆阿里云邮箱 黑科云 存储服务器 沈阳idc 更多