Sobes.tech
Junior

O que é polimorfismo no contexto das linguagens de programação C/C++?

sobes.tech IA

Resposta da IA

O polimorfismo é a propriedade dos objetos de terem múltiplas formas ou representarem vários tipos numa hierarquia de herança. Permite trabalhar com objetos de diferentes classes através de uma interface comum da classe base.

Em C++, o polimorfismo é implementado de duas formas principais:

  1. Polimorfismo em tempo de compilação (estático, polimorfismo ad-hoc):

    • Implementado através de sobrecarga de funções e operadores.
    • A seleção da função ou operador específico ocorre na fase de compilação.
    // Exemplo de sobrecarga de funções
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Polimorfismo em tempo de execução (dinâmico, polimorfismo de subtipo):

    • Implementado através de funções virtuais e ponteiros/links para a classe base.
    • A seleção da função específica a ser chamada ocorre na fase de execução.
    • Requer que haja pelo menos uma função virtual na classe base.
    • Utiliza a tabela de funções virtuais (vtable).
    // Exemplo de polimorfismo dinâmico
    class Base {
    public:
        virtual void show() { /* Implementação na classe base */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Implementação sobrescrita */ }
    };
    
    // Uso
    Base* ptr = new Derived();
    ptr->show(); // Chama Derived::show()
    

O polimorfismo permite escrever código mais flexível e extensível, pois novas classes podem ser adicionadas sem alterar o código existente que trabalha com a classe base.