我曾经与某人合作过,他说shared_ptr是不安全的,当从派生类向基类(即向上转换)进行强制类型转换时会出现切片问题。例如,如果有两个类A和B,其中B继承自A,则
shared_ptr<A> a(new B)
我指向了他这个链接:http://www.boost.org/doc/libs/1_43_0/libs/smart_ptr/shared_ptr.htm,其中写道:
shared_ptr<T>
可以在 T*
隐式转换为 U*
的情况下隐式转换为 shared_ptr<U>
。这意味着在这些情况下使用它是安全的,但他似乎并不这么认为。