【发布时间】:2020-08-26 20:48:33
【问题描述】:
写得简单我想问“使用智能指针的好理由是什么?”
前std::unique_ptr
但是,我并不是在询问使用智能指针的原因而不是常规(哑)指针。我想每个人都知道,或者快速搜索可以找到原因。
我要问的是这两种情况的比较:
给定一个名为 MyObject 的类(或结构)使用
std:queue<std::unique_ptr<MyObject>>queue;
而不是
std:queue<MyObject> queue;
(可以是任何容器,不一定是队列)
为什么有人应该使用选项 1 而不是选项 2?
【问题讨论】:
-
1.能够存储派生自
MyObject的类。 2. 作为std::optional<MyObject>的替代品。 3. 能够存储不可移动(和不可复制)的类。 -
智能指针 (IMO) 的主要原因是所有权。谁“拥有”资源?该所有权是否可以共享 (
std::shared_pointer) 或不共享 (std::unique_ptr)? -
@Someprogrammerdude
std:queue<MyObject>也定义了所有权。 -
表达这个问题的更简单的方法是:何时使用动态存储?
标签: c++ c++11 containers smart-pointers