Dynamic dispatch é o mecanismo de tempo de execução que decide qual implementação de método executar com base no tipo real do objeto, não no tipo declarado da variável. A maioria das linguagens baseadas em classes implementa isso com uma tabela de métodos virtuais (vtable).
O modelo vtable
Cada classe tem uma tabela de ponteiros para suas implementações de método. Cada objeto contém um ponteiro oculto para a vtable de sua classe. Uma chamada virtual funciona assim:
