gpt4 book ai didi

c++ - 使用 shared_ptr 保存对对象的引用的正确方法是什么

转载 作者:行者123 更新时间:2023-11-30 01:04:17 25 4
gpt4 key购买 nike

为了保存对对象的引用,将 std::shared_ptr 带 & 和不带 & 一起使用有什么区别?

class A{};

class B
{
private:
std::shared_ptr<A>&obj; // or std::shared_ptr<A>obj;
public:
B(std::shared_ptr<A>r) : obj(r) {}
};

int main()
{
std::shared_ptr<A>a(new A());
std::unique_ptr<B>b(new B(a));
std::cin.get();
return 0;
}

最佳答案

制作B::obj无论引用是什么类型,引用都是相同的。引用就是引用就是引用,它是否是对 int 的引用并不重要或 std::shared_ptr<A> .

请注意,由于您通过了 B构造函数参数,一旦构造函数返回,它将超出范围,留下对 r 的任何引用无效。

最后,保存对 std::shared_ptr 的引用确实没有任何意义。 .有时传递 std::shared_ptr 是有意义的引用参数,但不是真正存储这样的引用。引用是std::shared_ptr对象,不是什么 std::shared_ptr指向,使用引用不会增加内部计数器,也不会使用 std::shared_ptr 的共享所有权语义.

换句话说:不要保存对 std::shared_ptr 的引用.

关于c++ - 使用 shared_ptr 保存对对象的引用的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50441161/

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