小编Mic*_*ris的帖子

shared_ptr空指针和赋值

我想使用shared_ptr,就像我使用实际指针一样.我希望能够做到这样的事情

shared_ptr<int> a;
a = new int(5);
a = 0;
shared_ptr<int> foo()
    return 0;
Run Code Online (Sandbox Code Playgroud)

但它默认不实现.

我通过添加更改了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()
{
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是如果我做= -1; 它会编译并给我一个空指针,这应该不是问题,因为通常你不能给指针赋一个整数值.

所以我的问题是,这是实现这一点的正确方法还是我忘记了可能导致应用程序崩溃的情况?因为我看到的每一个地方,我看到为shared_ptr获取nullpointer的唯一方法是调用默认构造函数,与以下代码相比,代码不是很优雅:ptr = 0;.

c++ null pointers shared-ptr

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

null ×1

pointers ×1

shared-ptr ×1