Como usar substituição em c++?

Como usar substituição em c++?

Em C ++, se existe uma função com o mesmo nome na classe Base e Derived, a função de classe derivada substitui a função de classe base. Isso mostra que, se uma função for chamada com o objeto da classe derivada, em vez da função da classe base, a função de classe derivada será executada. Isso é conhecido como a função substituindo em C++, e permite que classes derivadas modifiquem o comportamento da função de classe base para atender às suas necessidades específicas. Substituindo é importante, pois permite a reutilização de código, facilitando a modificação dos programadores e removendo a necessidade de escrever o código do zero.

Neste artigo, mostraremos como usar o "sobrepor" Na linguagem de programação C ++.

Conteúdo deste artigo:

  • Como usar a substituição em C++?
  • Exemplo 1: Função C ++ substituindo
  • Exemplo 2: C ++ Access Substitued Função para a classe base
  • Exemplo 3: Função de substituição de chamada C ++ da classe derivada
  • Exemplo 4: Função de substituição de chamada C ++ usando ponteiro
  • Diferença entre substituir e sobrecarga em c++
  • Conclusão

Como usar a substituição em C++

Usar 'sobrepor' Em C ++, simplesmente precisamos adicioná -lo após a declaração de função na classe derivada. Aqui está um exemplo:

Exemplo 1: Função C ++ substituindo

O código fornecido demonstra função substituindo em C++.

#incluir
usando namespace std;
classe pai
público:
void linuxhint_print ()

cout << "This is Base Function" << endl;

;
Criança Criança: Pai público
público:
void linuxhint_print ()

cout << "This is Derived Function" << endl;

;
int main ()

Criança criança_derived;
Criança_derivou.Linuxhint_print ();
retornar 0;

Temos uma classe pai com uma função chamada Linuxhint_print () que imprime uma mensagem para o console. Em seguida, criamos uma classe infantil que herda publicamente da classe pai e substitui o Linuxhint_print () função com sua própria implementação que também imprime uma mensagem para o console.

Na função Main (), um objeto da classe infantil é criado e nomeado como Linuxhint_print () função. Desde que a classe infantil substitui o Linuxhint_print () função da classe pai, a saída será Esta é a função derivada em vez de Esta é a função base.

Exemplo 2: C ++ Access Substitued Função para a classe base

Às vezes, podemos querer chamar a função substituída na classe base da classe derivada. Podemos fazer isso usando o operador de resolução de escopo '::'. Aqui está um exemplo:

#incluir
usando namespace std;
classe base
público:
Virtual Void Test ()
cout << "This is Base Class" << endl;

;
classe Derivada: Base Pública
público:
Void test ()
Base :: test ();
cout << "This is Derived Class" << endl;

;
int main ()
Derivado derivadobj;
DerivadoBJ.teste();
retornar 0;

O código acima define duas classes Base e Derivado, onde a classe derivada herda da classe base. Ambas as classes têm uma função chamada test () que exibe a mensagem no console. A função test () na classe base é declarada como virtual, indicando que pode ser substituída por classes derivadas.

Na classe derivada, substituímos a função test () e chamamos a função de teste da classe base () usando Base :: test () imprimir Isso é base Aula para o console. Nós então imprimimos Esta é a classe derivada para o console depois de chamar a função de teste da classe base ().

Se criarmos um objeto da classe derivada e chamarmos sua função de teste (), a saída será Isso é base Aula seguido pela Esta é a classe derivada, indicando que a classe derivada substituiu a função de teste da classe base () e adicionou seu próprio comportamento.

Exemplo 3: Função de substituição de chamada C ++ da classe derivada

Também podemos chamar a função substituída na classe base de fora da hierarquia de classe usando um ponteiro para a classe base. Aqui está um exemplo:

Este código demonstra a substituição da função em C ++ usando herança.

#incluir
usando namespace std;
classe base
público:
Void test ()
cout << "This is Base Function" << endl;

;
classe Derivada: Base Pública
público:
Void test ()
cout << "This is Derived Function" << endl;
// Função substituída de chamada
Base :: test ();

;
int main ()
Derivado de derivado1;
derivado1.teste();
retornar 0;

Existem duas classes definidas, base e derivadas. Aqui no código acima, a classe derivada é derivada da base com a ajuda do especificador de herança pública.

Ambas as classes têm uma função de membro nomeada teste(), que exibe uma mensagem no console. No entanto, na classe derivada, a função test () é substituída para imprimir uma mensagem diferente e também chamar a função test () da classe base usando o operador de resolução de escopo (: :).

A função principal () tem um objeto de classe derivada, e sua função de teste () é chamada. Quando a função test () é chamada no objeto derivado1, ele imprime Esta é a função derivada para o console e depois chama a função test () da classe base, que imprime Esta é a função base para o console.

Exemplo 4: Função de substituição de chamada C ++ usando ponteiro

Também podemos chamar a função substituída na classe base usando um ponteiro para a classe derivada. Aqui está um exemplo:

#incluir
usando namespace std;
classe base
público:
Void test ()
cout << "This is Base Function" << endl;

;
classe Derivada: Base Pública
público:
Void test ()
cout << "This is Derived Function" << endl;

;
int main ()
Derivado de derivado1;
// ponteiro para derivado1
Base* ptr = &derived1;
// Função de classe base de chamada
ptr-> test ();
retornar 0;

No programa acima, duas classes são definidas, base e derivadas. Ambas as classes têm uma função de membro chamada test () que exibe uma mensagem no console.

No principal() Função, um objeto da classe derivado é criado e um ponteiro PTR da base do tipo é criado e inicializado para apontar para o objeto Derivado1.

A função test () é chamada no ptr ponteiro, que é da base do tipo. A função test () na classe base pode ser substituída em qualquer classe derivada usando o ponteiro.

Aqui quando a função test () é chamada no ptr ponteiro, ele imprime Esta é a função base para o console em vez de Esta é a função derivada.

Diferença entre substituir e sobrecarga em c++

Substituição e sobrecarga são dois conceitos importantes em programação orientada a objetos. Em C ++, eles são usados ​​para fornecer comportamento polimórfico, o que permite que diferentes objetos respondam de maneira diferente à mesma mensagem.

Sobrecarga está criando várias funções com o mesmo nome, mas com parâmetros diferentes ou tipos de argumento.

Substituindo, Por outro lado, refere -se ao processo de redefinir uma função em uma classe derivada que contém o mesmo nome que uma função de classe base.

O diferença -chave Entre a substituição e a sobrecarga é que a substituição envolve redefinir uma função em uma classe derivada com o mesmo nome e assinatura que a da classe base. Por outro lado, a sobrecarga envolve a criação de várias tarefas com o mesmo nome, mas parâmetros diferentes ou tipos de argumento.

Conclusão

O 'sobrepor' em C ++ pode garantir que a função na classe derivada esteja substituindo a função virtual da classe base. Este artigo discute diferentes maneiras de substituir uma função. No C ++, a função pode ser substituída nos dois sentidos da base para derivada ou vice -versa, também podemos definir um ponteiro para uma classe base e substituir uma função derivada nela.