【发布时间】:2012-04-22 08:07:07
【问题描述】:
我想像使用实际指针一样使用 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; 相比,该构造函数在代码中不是很优雅。
【问题讨论】:
-
文字
0是一个空指针常量,因此可以隐式转换为任何指针类型的空指针值。 -
+1 "我修改了boost库的shared_ptr的源代码" ;)
-
为什么不改用 C++11
nullptr?
标签: c++ pointers null shared-ptr