devxlogo

What is pure virtual function?

What is pure virtual function?

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

Answer:
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.

devx-admin

Share the Post: