2013-04-26 12 views
14

shared_ptrNULLの値で初期化することはできますか?ブースト:: shared_ptrをNULLに初期化する

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

+8

デフォルト設定は何ですか? –

+2

また、nullptrがC++の場合NULLよりも意味があります – paulm

+1

私の 'shared_ptr'が' NULL'(または '0')でオブジェクトをすでに指していた場合、以前のオブジェクトのrefカウントは減少していますか? –

答えて

22

デフォルトの建設はあなたのためにこれを行います:デフォルトの構築、すなわち:

boost::shared_ptr<Type> s_obj; 

s_objは今、NULLポインタを保持し、真実は、試験した場合にはfalseブールと評価します

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 
}; 
17

関連する問題