Pure Virtual Functions in C++

Pure Virtual Functions in C++

A Pure Virtual Function is a virtual function that is initialised to zero and has no definition in the base class.  Such functions are merely included in the base class, but do not perform any task.  A pure virtual function is also referred to as a do-nothing function.  Such a function is defined separately in all derived classes and its definition in the base class is not required.  The compiler, in case of a pure virtual function, requires each derived class to either define the function or re-declare it as a pure virtual function.  Such a class which contains a pure virtual function cannot be instantiated,  is referred to as an abstract class.

Consider the following code segment:

class base
{
public:
virtual void show_output() = 0;
//a pure virtual function declared
//and initialized to zero.
};

class derived : public base
{
public:
void show_output()
//function re-defined in derived class.
{
cout<<”Inside show_output function.”;
}
};

As the presence of a pure virtual function in a class requires that it should be implemented in derived classes, in the above code segment show_output() function in class ‘base’ is defined as virtual and is initialized with zero, so it is a pure virtual function.  Class ‘derived’ is publicly inherited from class ‘base’.  Class ‘base’ is an abstract base class, as it includes a pure virtual function.