Abstract class
In computing, when specifying an abstract class, the programmer is referring to a class which has elements that are meant to be implemented by inheritance. The abstraction of the class methods to be implemented by the sub-classes is meant to simplify software development.A concrete class, however, is a class for which entities (instances) may be created. This contrasts with abstract classes which can not be instantiated because it defeats its purpose of being an 'abstract'.
C++
In C++, an abstract class is a class having at least one pure virtual function.
They can not be instantiated and will generate a error if an attempt is made. They were meant to function as sort of stubs, that allow the programmer to identify what modules of functions (behaviour or methods) are needed without bothering to know how to actually implement them.This is inline with OOP of allowing the programmer to concentrate on how an object should behave without going into the actual detail.
Most object oriented programming languages allow the programmer to specify which classes are considered abstract and will not allow these to be instantiated (in Java, for example, the keyword abstract is used). This also enables the programmer to focus on planning and design. The actual implementation of course is to be done in the derived classes.
See, for example, class (object-oriented programming) for a unified discussion.