c++ - 返回 unique_ptr 还是只是移动对象?

标签 c++ c++11

我有一个正在创建对象的工厂,但我不确定返回这些对象的最佳方法是什么。我可以选择返回 unique_ptr<Trigger> ,或者我可以返回 Trigger由 Move 构造函数处理。什么是更好的做法?我最好的猜测是 Move,因为你肯定会得到一个对象。

class TriggerFactory
{
public:
    TriggerFactory();
    ~TriggerFactory();

    Trigger createMyTrigger() const; // Trigger contains a move constructor
};

对比

class TriggerFactory
{
public:
    TriggerFactory();
    ~TriggerFactory();

    unique_ptr<Trigger> createMyTrigger() const;
};

最佳答案

工厂模式经常用于多态性:工厂将返回某种抽象类型的特定具体类型。在这种情况下,它必须返回一个指向堆分配实例的指针(否则返回值将被切片)。

关于c++ - 返回 unique_ptr 还是只是移动对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370791/

相关文章:

c++ - 为什么类模板的成员函数声明都应该是良构的?

c++ - 来自自定义库的 Openssl 和 gsoap

c++ - 将 short int 复制到 char 数组

C++ 强制命名空间合规性

c++ - make_unique : Why is f(new T) exception safe 的异常安全

c++ - 如何为 2 个项目使用 cpp 源

c++ - unique_ptr 和指定解构函数

c++ - 引入右值引用真的有用吗?

c++ - 在映射最小值和最大值时从无符号转换为有符号的最佳方法?

c++ - constexpr 和弃用的转换警告