因为pp的类型是A*, 在编译时只会检查在A中的析构函数的可见性,~A()是public的,所以可见性检查没...
std::make_shared<Base>(); // 报错 是因为Base 类的析构函数声明为 protected,shared_ptr类作为外...
shared_ptr持有的资源就会被释放。shared_ptr在它的析构函数中delete它拥有的资源,此时需要调用这个资源...
别的懒得说了,就说一个有意思的。这一行是个函数声明:std::shared_ptr<Base> p();...
std::shared_ptr<Base> p = std::make_shared<Derived>();
原因就是base类里有纯虚函数,含有纯虚函数的类不能创建对象,你换用裸指针或者直接声明变量也不行,...
然而,使用make_shared来创建一个类型为Base的shared_ptr,并用一个Derived对象d进行初始化,会导致编译...