对于移动构造的情况,我们不需要调整引用数,直接把 other.ptr_ 置为 空,认为 other 不再指向该共享对象即可
实现如下所示:
template
shared_ptr...在析构函数中,会先判断该临时对象的是否指向资源,如果没有,析构结束。否则,对引用计数减1,判断引用计数是否为0,如果为0,删除共享引用计数指针,否则不操作。...* -> circle* 使用dynamic_cast转换后,指针为空.此时资源还是被dptr2拥有,dptr1为0
shared_ptr dptr2(new shape);
shared_ptr...(1)下行转换,基类转换为子类,例如:智能指针转换类似于shape* 转换为circle* 使用dynamic_cast转换后,指针为空.此时资源还是被dptr2拥有,dptr1为0。...);
}
调用:
// shape* -> circle* 使用static_cast转换后,指针为空 与dynamic_cast相比,不安全
shared_ptr sptr2(new