gpt4 book ai didi

c++ - 使用 unique_ptr 描述意图

转载 作者:太空狗 更新时间:2023-10-29 21:51:05 26 4
gpt4 key购买 nike

以下是描述所有权意图的好方法吗(不使用 shared_ptr?)

class Z { };
class A
{
unique_ptr<Z> m_z; //want to say 'I own Z'
};

class B
{
B(A & a)
{
m_z = a._z.get();
}

Z* m_z; //want to say 'I do not own Z, just a ref...'
}

此外,B._z 可以悬空。有没有办法在不求助于 shared_ptr 和 weak_ptr 的情况下纠正问题?

最佳答案

unique_ptr 适用于所有权。如果指向该对象的原始指针仍然被提供并存储在别处(因此它在技术上是共享的)那么这可能会使您的代码的读者感到困惑。

如果您不想使用 shared_ptr 并且不想有悬挂指针,那么观察者模式可能会帮助您。使用它可以确保 B 类实例在其 _z 被销毁时收到信号。这可能比 A 中的 shared_ptr 和 B 中的 weak_ptr 贵一点。对于线程安全示例,请尝试... Boost.Signals2 .

我同意 weak_ptr 的用法看起来很难看,但观察者的东西也会给代码增加一些膨胀。

关于c++ - 使用 unique_ptr 描述意图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com