Briefly, it's to make the class abstract, so that it can't be instantiated, but a child class can override the pure virtual functions to form a concrete class. This is a good way to define an interface in C++.
if you have a class named SHAPE(where you can derived different types of shapes circle/square/triangle...)
And suppose SHAPE has function to calculate AREA. but you can't define AREA for every type of shape. That s why it is not implemented in the base class.