devxlogo

Simulating Virtual Constructors

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();   //
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist