【发布时间】:2023-04-03 17:58:01
【问题描述】:
我有一个关于在原始 ptr 上使用 shared_ptr<...> 的问题。考虑以下示例:
shared_ptr<BaseClass> someName = shares_ptr<Derived>(new Derived);
shared_ptr<BaseClass> someName1 = shares_ptr<Derived1>(new Derived1(someName));
这里,Derived1 将 shared_ptr<BaseClass> 的实例作为其构造函数的输入。我使用 shared_ptr 主要是为了多态性。由于一个BaseClass 实例可以用作多个其他Derived 实例的输入,因此unique_ptr 不是一种选择,因为我必须一直更改所有权。
但所有权是我主要关心的问题。派生实例不拥有传递给构造函数的实例。通过原始ptr更好吗?
【问题讨论】:
-
Raw 与 @Oblivion 所说的
unique_ptr。shared_ptr有一个完全不同的用例——尽管我不同意你有一个使用它的案例。 -
@TedLyngmo 我同意,这里 shared_ptr 似乎不是一个好选择。谢谢我编辑了我的答案。
-
@Oblivion 我必须承认我还没有找到
shared_ptr的用途,除了修补时。我可能有偏见,但我永远不会把它放在我的设计中。 -
@TedLyngmo 我相信如果一个人有可维护的软件,这是正确的决定。
-
@Bastian 您所描述的是否与
shared_ptr/weak_ptr有本质上的关系?如果是这样 - 你做对了!
标签: c++ c++11 smart-pointers