Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Sobrescrita de Função em C++ Explicada – Exemplos Práticos e Boas Práticas

Sobrescrita de Função em C++ Explicada

Este guia desmistifica a sobrescrita de função em C++, fornecendo exemplos claros, boas práticas e um passo a passo que um desenvolvedor C++ experiente usaria em produção.

Por Que a Sobrescrita de Função Importa

Na programação orientada a objetos, a herança permite que uma classe derivada estenda ou modifique o comportamento de uma classe base. Quando a mesma função membro é declarada tanto na classe base quanto na derivada, a implementação da derivada "sobrescreve" a da base. Quando você chama essa função através de um objeto da classe derivada, a versão sobrescrita é executada.


Exemplo 1: Sobrescrita Básica

#include <iostream> using namespace std; class Base { public: void print() { cout << "Função Base" << endl; } }; class Derived : public Base { public: void print() { cout << "Função Derivada" << endl; } }; int main() { Derived d; d.print(); return 0; }

Saída

Função Derivada

Chamar print() em uma instância Derived executa a função sobrescrita, não a versão da base.

Sobrescrita de Função em C++ Explicada – Exemplos Práticos e Boas Práticas

Se você criar um objeto Base e chamar print(), verá a implementação original da base.

Base b; b.print(); // Saída: Função Base

Acessando a Função Base Sobrescrita

Às vezes, você precisa invocar a versão da classe base explicitamente. Duas técnicas comuns são:

Exemplo 2: Resolução de Escopo para Chamar Função Base

#include <iostream> using namespace std; class Base { public: void print() { cout << "Função Base" << endl; } }; class Derived : public Base { public: void print() { cout << "Função Derivada" << endl; } }; int main() { Derived d1, d2; d1.print(); d2.Base::print(); // Chamada explícita a Base::print return 0; }

Saída

Função Derivada Função Base

Exemplo 3: Chamando Função Base de Dentro da Derivada

#include <iostream> using namespace std; class Base { public: void print() { cout << "Função Base" << endl; } }; class Derived : public Base { public: void print() { cout << "Função Derivada" << endl; Base::print(); // Invocar versão base } }; int main() { Derived d; d.print(); return 0; }

Saída

Função Derivada Função Base

Exemplo 4: Usando Ponteiro Base para Acessar Função Base

#include <iostream> using namespace std; class Base { public: void print() { cout << "Função Base" << endl; } }; class Derived : public Base { public: void print() { cout << "Função Derivada" << endl; } }; int main() { Derived d; Base* ptr = &d; // Ponteiro para Base apontando para objeto Derived ptr->print(); // Chama Base::print porque a função não é virtual return 0; }

Saída

Função Base

Quando a função não é declarada virtual, um ponteiro de classe base invoca a implementação da base. Para obter comportamento polimórfico verdadeiro, declare a função base como virtual e sobrescreva-a na classe derivada.


Esses exemplos ilustram a mecânica da sobrescrita de função em C++. Dominando esses conceitos, você pode escrever código mais limpo e sustentável que aproveita o polimorfismo efetivamente.

Linguagem C

  1. Dominando Operadores em C++: Guia Completo com Exemplos Práticos
  2. Comentários em C++: Boas Práticas para Código Legível e Manutenível
  3. Como Passar Arrays para Funções em C++: Guia Prático
  4. Funções em C++ Explicadas com Exemplos Práticos de Código
  5. Dominando Funções em C: Estrutura, Declaração e Boas Práticas
  6. Linguagem de Programação C++: Visão Geral e Principais Características
  7. Constantes e Literais em C++: Tipos, Sintaxe e Boas Práticas
  8. Guia Completo de Operadores em C++: Tipos, Uso e Boas Práticas
  9. Dominando Tipos Numéricos em C++: Guia Prático
  10. Dominando Sobrecarga em C++: Funções e Operadores Explicados