boost::shared_ptr std::shared_ptr
所在的命名空间,所在的头文件
#include <boost/shared_ptr.hpp> ⇒ boost::shared_ptr #include <memory> ⇒ std::shared_ptr
便捷函数(make_shared)
#include <boost/make_shared.hpp> ⇒ boost::make_shared #include <memroy> ⇒ std::make_shared
作为私有成员的共享型智能指针的初始化时机
class A
{
public:
A() { std::cout << "A:A()" << std::endl; }
};
class B
{
public:
B() {std::cout << "B::B()" << std::endl;}
// 哪怕只是空参构造的空实现,且无论给不给
// 也会自动调用私有成员的默认构造,且调用的时机发生在当前类的构造之前
private:
boost::shared_ptr<A> _ptr;
A _a;
};
int main(int, char**)
{
B b;
// 只对成员 _a 调用其构造函数
//
return 0;
}