Jeśli masz sytuację np. taką:
+-----------+
| Animation | Klasa abstrakcyjna
+-----------+
|
v
+--------------+
| AnimationOne | Klasa pochodna
+--------------+
|
v
+--------------+
| AnimationTwo | Klasa pochodna
+--------------+
To wtedy masz kontener zawierający wskaźniki na klasę abstrakcyjną, czyli Animation i taki wskaźnik może przechowywać adres obiektów klas pochodnych. Dzięki temu faktowi oraz polimorfizmowi wynika, że możesz skorzystać z własności metod czystowirtualnych, czyli np.:
std::vector<Animation*> kontener;
kontener.push_back(new AnimationOne);
(kontener[0])->metoda(); // Znając założenia polimorfizmu wiemy, że ta metoda będzie odpowiadała wersji z klasy AnimationOne, a nie Animation, ponieważ w tej drugiej klasie ta metoda nie ma ciała - jest czystowirtualna