将boost :: shared_ptr初始化为NULL

时间:2013-04-26 05:35:28

标签: c++ boost

我可以使用shared_ptr值初始化NULL吗?

boost::shared_ptr<Type> s_obj(NULL);

如果没有,那怎么样?

2 个答案:

答案 0 :(得分:22)

默认构造为您执行此操作:

template<class T> class shared_ptr
{
public:

    explicit shared_ptr(T * p = 0): px(p)
    { 
        //Snip
    }

    //...

private:

    T * px;            // contained pointer
    count_type * pn;   // ptr to reference counter
};

答案 1 :(得分:17)

这是默认构造,即:

boost::shared_ptr<Type> s_obj;

s_obj现在持有一个空指针,并在经过真值测试时计算为布尔值假;