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:
- Pure virtual functions must be overriden by the derived classes.
- 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.