2013-04-26 15 views
14

Czy mogę zainicjować wartość shared_ptr z wartością NULL?Inicjowanie boost :: shared_ptr na NULL

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

Jeśli nie, to w jaki sposób?

+8

Czy to nie jest to, co robi domyślna konstrukcja? –

+2

również nullptr ma więcej sensu niż NULL, jeśli C++ 11 – paulm

+1

Jeśli moje 'shared_ptr' wskazywało już na obiekt, kiedy przydzieliłem go z' NULL' (lub '0'), czy liczba ref jest mniejsza od wcześniejszego obiektu? –

Odpowiedz

22

Domyślna budowa robi to za ciebie:

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

To budowę domyślną, tj .:

boost::shared_ptr<Type> s_obj; 

s_obj posiada obecnie zerowy wskaźnik i ocenia się boolean fałszywy podczas testowania prawdy;

Powiązane problemy