static_pointer_cast的奇怪事
本帖最后由 花开自有丶花落 于 2017-8-1 17:45 编辑在c++标准库第二版第95页有这样几行代码
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?
有人撒子? 刚刚突然觉得仿佛失了智,sp2类型后的use_count是sp1调用的,但是改了之后还是{:10_247:} 居然木有人回 昨天梦到有人给我回帖了,然并卵{:10_269:} emm?
页:
[1]