Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Advanced
Mar 12, 1999

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(); 
  //
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap