gpt4 book ai didi

c++ - 是否存在一种模式来描述哪个对象控制另一个对象的生命周期?

转载 作者:太空狗 更新时间:2023-10-29 23:53:42 27 4
gpt4 key购买 nike

有时,当一个对象被创建时带有指向另一个对象的指针,这意味着它负责在销毁时销毁另一个对象……其他时候则不是。有时甚至会因情况而异,而不是每个类都有固定的规则。

非常简单的例子:

class A
{
private:
B *b;
public:
A(B *_b)
{
if(_b)b = _b; //A should NOT destroy b
else b = new B(); //A should destroy b
}
}

A::~A() 中,您最终需要知道。当然你可以有一个小 bool 标志,但我想知道这里是否有任何使用良好的模式?甚至我可以将此行为的名称放入代码注释中,以便其他开发人员获得更多线索?

最佳答案

一般的想法称为“智能指针”,在您的具体示例中,您需要一个 shared_ptr。

class A {
std::shared_ptr<B> b;
public:
A(std::shared_ptr<B> b = std::make_shared<B>())
: b(b) {}
};

请注意,如果 std::shared_ptr 在您的编译器上不可用,您必须使用 boost::shared_ptr。

关于c++ - 是否存在一种模式来描述哪个对象控制另一个对象的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9548371/

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