Simulating Virtual Constructors

A constructor may not be declared virtual. The easiest way to simulate virtual construction is by defining a virtual member function that returns a constructed object of its class type:

 class Browser{public:  virtual Browser* construct()  { return new Browser; } //virtual default constructor  virtual Browser* clone() { return new Browser(*this); } //virtual copy constructor};class HTMLEditor: public Browser{public:  HTMLEditor * construct() { return new HTMLEditor; }//virtual default constructor  HTMLEditor * clone() { return new HTMLEditor (*this); } //virtual copy constructor};

The polymorphic behavior of the member functions clone() and construct() enables you to instantiate a new object of the right type, without having to know the exact type of the source object.

 void create (Browser& br){  Browser* pbr  = br.construct();   //

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: