Sunday 8 April 2018

Virtual Destructor

A problem can occur while using polymorphism to process dynamically located object of a class hierarchy. If an object is destroyed explicitly by applying 'delete' operator to a base class pointer to the object, only the base class destructor function is called on the object.

But we are interested to delete whole memory allocated to the base class as well as derived classes. There is simple solution to this problem , declare the virtual base class destructor. This automatically makes all derived class destructor virtual even though they do not have the same name as the base class destructor.

Program to demonstrate the need of virtual destructor

#include<conio.h>
#include<iostream.h>
class A
{
public:
virtual void getdata( )
{
cout<<"\n\tThis is class A and getdata( ) method";
}
~A( )
{
cout<<"\n\tThis is a class A destructor";
}
};
class B:public A
{
public:
void getdata( )
{
cout<<"\n\tThis is class B and getdata( ) method";
}
~B( )
{
cout<<"\n\tThis is a class B destructor";
}
};
void main( )
{
clrscr( );
A *ptr;
ptr=new B;
ptr->getdata( );
delete ptr;
getch( );
}

Output:-
This is class B and getdata( ) method
This is a class A destuctor

Program to demonstrate the use of virtual destructor

#include<conio.h>
#include<iostream.h>
class A
{
public:
virtual void getdata( )
{
cout<<"\n\tThis is class A and getdata( ) method";
}
virtual ~A( )
{
cout<<"\n\tThis is a class A destructor";
}
};
class B:public A
{
public:
void getdata( )
{
cout<<"\n\tThis is class B and getdata( ) method";
}
~B( )
{
cout<<"\n\tThis is a class B destructor";
}
};
void main( )
{
clrscr( );
A *ptr;
ptr=new B;
ptr->getdata( );
delete ptr;
getch( );
}

Output:-
This is class B and getdata( ) method
This is a class B destructor
This is a class A destructor

0 Comments:

Post a Comment

Popular Posts

Categories

AI (27) Android (24) AngularJS (1) Assembly Language (2) aws (17) Azure (7) BI (10) book (4) Books (113) C (77) C# (12) C++ (82) Course (60) Coursera (176) coursewra (1) Cybersecurity (22) data management (11) Data Science (85) Data Strucures (6) Deep Learning (9) Django (6) Downloads (3) edx (2) Engineering (14) Excel (13) Factorial (1) Finance (5) flutter (1) FPL (17) Google (18) Hadoop (3) HTML&CSS (46) IBM (25) IoT (1) IS (25) Java (92) Leet Code (4) Machine Learning (43) Meta (18) MICHIGAN (4) microsoft (3) Pandas (3) PHP (20) Projects (29) Python (726) Python Coding Challenge (169) Questions (2) R (70) React (6) Scripting (1) security (3) Selenium Webdriver (2) Software (17) SQL (40) UX Research (1) web application (8)

Followers

Person climbing a staircase. Learn Data Science from Scratch: online program with 21 courses