gpt4 book ai didi

c++ - 这是对 unique_ptr 的误用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:18 25 4
gpt4 key购买 nike

我正在转向智能指针,并努力确保正确使用它们。有很多问题涵盖了何时使用每个问题,但我找不到专门关于 getter 的问题。

我有一个拥有指针的类,我希望其他类能够访问该指针(逐步重构遗留代码)。我想给这个类一个 unique_ptr 因为它只会拥有那个对象,但它们不能被复制。我应该返回对 unique_ptr 的引用,还是只使用 shared_ptr?

class B
{
public:
doAction() {};
};

class A
{
private:
std::unqiue_ptr<B> pointer;

public:
std::unique_ptr<B>& GetPointer()
{
return pointer;
}

};

a.GetPointer()->doAction();

最佳答案

如果其他类需要存储指针并且可能比您的类 A 生命周期更长,请使用 shared_ptr

如果不是,您的 B 对象应该在 A 被销毁时被销毁,这是对 unique_ptr 的完全有效使用。

正如评论中所指出的,只有当其他类也被允许更改您的指针时,这才适用。如果不是,则返回一个原始指针。

两者的区别不在于谁有权访问类,而在于谁负责销毁引用的对象。

关于c++ - 这是对 unique_ptr 的误用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45104335/

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