جایی خوندم که همچین چیزی به عنوان یه اصطلاحه که میذاره کارهایی انجام بدیم که مستقیما تو C++ ساپورت نمیشه.
و کد زیر آورده شده که تو اون اثر سازنده مجازی بوسیله تابع عضو clone() و تابع عضو create() که مجازی هستن دیده میشه:
class Shape {
public:
  virtual ~Shape() { }                 // A virtual destructor
  virtual void draw() = 0;             // A pure virtual function
  virtual void move() = 0;
  ...
  virtual Shape* clone()  const = 0;   // Uses the copy constructor
  virtual Shape* create() const = 0;   // Uses the default constructor
};
class Circle : public Shape {
public:
  Circle* clone()  const;   // Covariant Return Types; see below
  Circle* create() const;   // Covariant Return Types; see below
  ...
};
Circle* Circle::clone()  const { return new Circle(*this); }
Circle* Circle::create() const { return new Circle();      }
در تابع عضو clone()، دستور new Circle(*this) سازنده کپی Circle رو صدا میزنه تا محتوای this رو در شیء جدید ایجادشده Circle کپی کنه.