El polimorfismo indica que una variable pasada o esperada puede adoptar múltiples formas. Cuando se habla de polimorfismo en programación orientada a objetos se suelen entender dos cosas:
1. La primera se refiere a que se puede trabajar con un objeto de una clase sin importar de qué clase se trata. Es decir, se trabajará igual sea cual sea la clase a la que pertenece el objeto.
Este comportamiento puede ser el deseado en ciertos casos, pero otras veces tal vez se desee que el comportamiento de la clase desaparezca por completo.
Los únicos métodos que no pueden ser declarados como virtuales son los constructores, los métodos estáticos, y los operadores new y delete.
En C++ el concepto de clases abstractas se implementa mediante funciones virtuales puras. Estas funciones se declaran igual que cualquier otra función anteponiendo la palabra virtual y añadiendo al final de la declaración =0. Para estas funciones no se proporciona implementación.