我想使用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