鱼C论坛

 找回密码
 立即注册
查看: 2838|回复: 5

[技术交流] static_pointer_cast的奇怪事

[复制链接]
发表于 2017-8-1 17:15:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 花开自有丶花落 于 2017-8-1 17:45 编辑

在c++标准库第二版第95页有这样几行代码
P70801-165926(1).jpg
shared_ptr<void>sp(new int);
shared_ptr<int>(static_cast<int*>(sp.get()));语义是错误的,因为引用次数没有共享,所有被销毁俩次
static_pointer_cast<int*>(sp);  
就是这一行,书上原句类型就是int*,但是我发现和上面语义不同啊,呐,上面讲原始指针转为int*作为shared_ptr的初值
shared_ptr<int> sp2 = static_pointer_cast<int*>(sp);
在VS2017这样的语句确实是红线的
然后发生更有意思的事,明明是不同的类型(一个是shared_ptr<int>,一个是一个是shared_ptr<int*>),却是同一个引用次数(具体请看图)?是我哪没理解到还是啥emmm?
屏幕截图(4).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-1 17:25:42 | 显示全部楼层
有人撒子?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 17:46:51 | 显示全部楼层
刚刚突然觉得仿佛失了智,sp2类型后的use_count是sp1调用的,但是改了之后还是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-2 10:11:35 | 显示全部楼层
居然木有人回
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-3 10:36:29 | 显示全部楼层
昨天梦到有人给我回帖了,然并卵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-4 08:21:38 | 显示全部楼层
emm?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 12:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表