Login | Register   
LinkedIn
Google+
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
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Dec 14, 2001

A Class with a Virtual Function Should Have a Virtual Destructor


A rule of thumb in class design says that if a class has at least one virtual function, it should have a virtual destructor, too. This is because the presence of a virtual member function implies that the class may serve as a base class. To ensure that the right destructor is called when you're using a pointer or a reference to a base that actually point to a derived object, the destructor must be virtual. For example:
 
class character_device
{
public:
 virtual int read(char * p, int sz)=0;
 virtual ~ character_device()=0;
};
class modem: public character device
{
//..
public:
int read(char * p, int sz); //implement pure virtual _
method ~modem();
};

character_device * pcd=new modem; 
//..use pcd
delete pcd; // ok, calls pcd->~modem()
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date