ExpertiDict

C++ · Essencial · Português · Técnico

polimorfismo

ˌpolimoɾˈfiʒmusubstantivo

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.

Veja também

Todos os termos de C++