gpt4 book ai didi

c++ - 如何在没有初始化 shared_ptr 对象的情况下初始化对象的管理器?

转载 作者:行者123 更新时间:2023-11-28 05:50:14 25 4
gpt4 key购买 nike

我想这样使用智能指针:

using namespace std;

shared_ptr<string> foo;
weak_ptr<string> bar (foo);
foo = make_shared<string>("some string");
cout << *bar.lock(); // SIGSEGV

线索是如何初始化shared_ptr 的对象管理器而不构造对象(在本例中为string)。有可能吗?我可以使用对象的默认构造函数,然后使用复制/移动赋值。但是否存在更优雅的解决方案?

对我来说,对象不会被初始化是值得的——如果我用空值初始化 shared_ptr,那将是逻辑上的谎言。

最佳答案

为什么不这样做:

shared_ptr<string> foo = make_shared<string>();
weak_ptr<string> bar (foo);
*foo = "some string":

这样你实际上是在共享一个字符串。你描述的更像是共享一个共享指针。

关于c++ - 如何在没有初始化 shared_ptr 对象的情况下初始化对象的管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35414018/

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