Scott Meyers在他的书" Effective Modern C++"中提到,shared_ptr不鼓励使用数组,因为当转换为Base类指针时,它会在类型系统中创建"漏洞".
但是,它可以创建shared_ptr<T>由unique_ptr<T[]>下列方式
std::shared_ptr<D> pDerived = std::shared_ptr<D>(std::make_unique<D[]>(3)); // Create an array of 3 D's
Run Code Online (Sandbox Code Playgroud)
以上代码是否有潜在危险?如果pDerived以后被复制到一个存在陷阱pBase吗?
std::shared_ptr<B> pBase = pDerived; // B is the base class for D
Run Code Online (Sandbox Code Playgroud)