返回unique_ptr还是只是移动对象?

时间:2018-03-19 19:21:35

标签: c++ c++11

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

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

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

vs

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

    unique_ptr<Trigger> createMyTrigger() const;
};

1 个答案:

答案 0 :(得分:-1)

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