What is pure virtual function?

What is pure virtual function?

Can you explain and give me examples of pure virtual function? What is the difference between pure virtual function and virtual function?

A pure virtual function is a virtual member function of a class that hasno implementation. When writing classes from which people will inherit, it is important to stress that the derived classes must define certainvirtual functions.

Let’s consider a class called Shape and derived classes Square and Circle. We want both derived classes to provide a printing routine.

struct Shape {   virtual void print () = 0; // makes it pure virtual};struct Square : Shape{   void print ();};void Square::print (){  // define the fn}struct Circle{//.. other stuff};void foo (){  Square s ;  s.print () ; // OK…  Circle c; // error .. did not define pure virtual fn}
In this case the compiler will not allow us to make an instanceof the Circle class because it did not override the pure virtualfunction print ();.

Some things to remember:

  1. Pure virtual functions must be overriden by the derived classes.
  2. A class with at least one pure virtual function ? either its own (like Shape) or inherited and not overriden (like circle) ? cannot be instantiated. Such classes are called Abstract Base Classes.


Share the Post: