我想使用shared_ptr就像我會使用一個實際的指針。我希望能夠做到像shared_ptr空指針和分配
shared_ptr<int> a;
a = new int(5);
a = 0;
shared_ptr<int> foo()
return 0;
但它沒有默認實現。
我通過添加
template<class Y> void operator=(int i)
{
reset(i);
}
template<class Y> void reset(int i)
{
this_type(i).swap(*this);
}
template<class Y> void operator=(Y * p)
{
reset(p);
}
shared_ptr(int i): px(0), pn()
{
}
改變升壓庫的shared_ptr的源代碼的唯一事情是,如果我做= -1;它會編譯並給我一個空指針,這應該不成問題,因爲通常你不能給一個指針賦一個整數值。
所以我的問題是,這是爲了實現這個還是有我忘了,可能會導致應用程序崩潰的情況下正確的方法是什麼?因爲在我看來,我看到爲shared_ptr獲取空指針的唯一方式是調用默認的構造函數,這在代碼中不是很優雅,與之相比:ptr = 0 ;.
文字上的'0'是一個_null指針常量_已經可以隱式轉換爲任何指針類型的_null指針值_。 – 2012-04-22 08:27:24
+1「我更改了boost庫的shared_ptr的源代碼」;) – Offirmo 2013-02-06 11:58:35
爲什麼不使用C++ 11'nullptr'代替? – Venemo 2014-03-09 13:15:16