In general, a pure abstract class is used to define an interface and is intended to be inherited by concrete classes . It’s a way of forcing a contract between the class designer and the users of that class. The users of this class must declare a matching member function for the class to compile.