Prototype, do I understand that it needs to look like this?

Began to study the patterns, Prototype seemed the most versatile, everywhere, the implementation is different, there is no consensus on how it should look like this pattern. (Study book 4 Zelikow) Who rummages prompt should look like a visual realization of this miracle.
I got this:
#include <iostream>

class Prototype {
public:
 virtual Prototype* clone() = 0;
 virtual ~Prototype() {};
};

ConcretePrototype1 class : public Prototype {
 int data;
public:
 ConcretePrototype1(int other_data): data(other_data) {}
 ConcretePrototype1(const ConcretePrototype1 &prototype): data(prototype.data) {}
 Prototype* clone() {return new ConcretePrototype1(* this);}
};

ConcretePrototype2 class : public Prototype {
 int data;
public:
 ConcretePrototype2(int other_data): data(other_data) {}
 ConcretePrototype2(const ConcretePrototype2 &prototype): data(prototype.data) {}
 Prototype* clone() {return new ConcretePrototype2(* this);}
};

5d49c2ffacfa6829497216.png
March 25th 20 at 13:40
1 answer
March 25th 20 at 13:42
There is no consensus on any pattern - as it should be, since they belong to the PLO, and not to a specific language, with its idioma.

In General - Yes, the pattern incorporated into the language, because you can define the copy constructor, but in fact, the member function clone() is not needed.

Find more questions by tags Patterns of designingC++