我想使用 shared_ptr 就像使用实际指针一样。我希望能够做类似的事情
shared_ptr<int> a;
a = new int(5);
a = 0;
shared_ptr<int> foo()
return 0;
但默认情况下未实现。
我通过添加更改了 boost 库的 shared_ptr 的源代码
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()
{
}
唯一的事情是,如果我做 a = -1; 它会编译并给我一个空指针,这不应该是一个问题,因为通常你不能为指针分配一个整数值。
所以我的问题是,这是实现此功能的正确方法还是我忘记了可能使应用程序崩溃的情况?因为在我所见的任何地方,我看到为 shared_ptr 获取空指针的唯一方法是调用默认构造函数,与 ptr = 0; 相比,该构造函数在代码中不是很优雅。