在现代C++ 中,我应该如何管理无主指针?我在想像weak_ptr
for 之类的东西unique_ptr
,但这似乎不存在。
例如,如果我有一个A
拥有指针的类,我应该使用unique_ptr<X>
而不是旧X*
指针,例如
class A
{
std::unique_ptr<X> _myX;
};
Run Code Online (Sandbox Code Playgroud)
但是如果我有另一个B
使用这个指针的类,我在这里做什么?使用 C 风格的指针,我会这样做:
class B
{
X* _someX;
};
Run Code Online (Sandbox Code Playgroud)
这似乎是正确的,但从代码中看不出我引用了另一个对象的指针(例如,读者可能认为我可能没有使用智能指针)。
std::shared_ptr<X>
- 似乎是浪费引用计数,因为A
它保证比B
.std::weak_ptr<X>
- 仅适用于 shared_ptr
X&
- 仅当 X& 在 B 的构造函数中可用时才有效这似乎是一个明显的问题,如果之前有人问过,很抱歉。我环顾四周,看到了这个问题,但不幸的是,在一个特定情况下,OP 询问“是否可以使用 X*”。我正在寻找我通常应该做的事情而不是X*,(如果有的话!)。
据我所知,a std::weak_ptr
被用作引用std::shared_ptr
可能已被解除分配的引用的内存的安全方式.可以和它一起使用std::unique_ptr
吗?