A pure virtual function is declared with = 0 and needs no implementation in the base. It says every concrete derived class must supply one.
struct Shape {
virtual double area() const = 0; // no body, derived classes must provide one
}; // Shape s; fails to compile, Shape is abstract
The difference from a plain virtual function is obligation. A virtual function provides a default that derived classes may replace. A pure virtual function provides nothing to fall back on. So the compiler refuses to create an object of the class, or of any derived class that leaves the function unimplemented.
Any class with at least one pure virtual function is abstract. You use it as an interface by holding objects through a Shape pointer or reference.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.