What's the difference between Prototype design pattern and copy constructor in C++
<p>I am trying to understand when I should use Prototype design pattern.
Here is example of Prototype as I understand it:</p>

<pre><code>class Prototype
{
public:
    virtual Prototype* clone() = 0;
...
};

class ConcretePrototype : public Prototype
{
public:
    Prototype* clone() override { ... }
};

// Usage:
ConcretePrototype proto;
auto protPtr = proto.clone();
</code></pre>

<p>Where is a question:
Why this better than:</p>

<pre><code>class Obj
{
public:
    Obj();

    Obj(const Obj&amp;);
    Obj&amp; operator = (const Obj&amp; other);
};

Obj o;
Obj o2 = o;
</code></pre>

<p>So when should I actually use Prototype?</p>