C++ · Essencial · Português · Técnico
polimorfismo
Capacidade de tratar objetos de classes derivadas pela interface da base. Em C++, o comportamento dinâmico exige funções virtuais e acesso por ponteiro ou referência.
Onde usar
Aparece quando um vetor de ponteiros para a base chama métodos que cada classe derivada implementa. Sem virtual, a chamada é resolvida na compilação e ignora o tipo real.
Em código
struct Forma {
virtual double area() const = 0;
virtual ~Forma() = default;
};
void mostrar(const Forma& f) {
std::cout << f.area(); // via vtable
}Exemplos
Graças ao polimorfismo, o laço chama a área de cada forma.
Sem a palavra virtual, o polimorfismo não acontece e o método da base é chamado.
Cuidado
Não confunda com polimorfismo estático, obtido com templates e sobrecarga, que é resolvido em tempo de compilação.
Origem
Do grego polýs, muitos, e morphé, forma.