14

我可以shared_ptrNULL值初始化吗?

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

如果没有,那怎么办?

4

2 回答 2

23

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

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
};
于 2013-04-26T05:38:25.803 回答
18

这是默认构造,即:

boost::shared_ptr<Type> s_obj;

s_obj现在持有一个空指针,并在经过真值测试时评估为布尔值 false;

于 2013-04-26T05:38:42.807 回答