Polimorfismo em exemplos de C ++

Polimorfismo em exemplos de C ++
O polimorfismo, que implica "várias formas", acontece quando várias classes são conectadas por hereditariedade. Em vários contextos, a mesma coisa (método ou operador) age de maneira diferente. Podemos herdar propriedades e funções de alguma outra classe por meio de hereditariedade. O polimorfismo usa essas técnicas para uma variedade de propósitos. Isso nos permite realizar uma atividade específica de várias maneiras. Portanto, neste artigo, discutiremos exemplos de polimorfismo em C ++ usando alguns exemplos no Ubuntu 20.04. Temos iniciado a criação e o lançamento de um novo arquivo C ++ no console do terminal.
$ toque polimorfismo.cc
$ nano polimorfismo.cc

Exemplo 01: sobrecarga da função

Quando os argumentos deles são únicos, você pode utilizar duas funções principais com o mesmo título em C++. Vários métodos são chamados com base na quantidade e no tipo de parâmetros, e esse conceito é conhecido como sobrecarga de função. Iniciamos nosso primeiro exemplo com o espaço de nome "std" padrão e o cabeçalho de entrada de entrada "iostream". Três funções definidas pelo usuário são definidas, cada uma contendo uma única instrução Cout. A primeira função contém um parâmetro de tipo inteiro, o segundo contém o parâmetro de tipo duplo e o último contém dois parâmetros de tipo duplo. As duas primeiras funções "val" simplesmente obtêm valor do método Main () e exibem -o no shell através da instrução Cout. O terceiro é obter dois valores de tipo duplo do principal () e exibir a soma de ambos os valores no shell com a ajuda da cláusula Cout. A função principal () é simplesmente chamar três métodos de mesmo nome, um após o outro, passando por diferentes valores.

#incluir
usando namespace std;
int val (int n1)
cout <<"Integer: "<< n1 <
Val duplo (N1 duplo)
cout <<"Double: "<< n1 <
Val duplo (N1 duplo, N2 duplo)
cout << "Sum: "<< n1+n2<
int main ()
val (10);
Val (9.25);
Val (4.1, 8.23);
retornar 0;

A compilação deste código C ++ é bem -sucedida usando o compilador G ++ no shell.

$ g ++ polimorfismo.cc

Depois de executar o código, temos os valores exibidos no console abaixo.

$ ./a.fora

Exemplo 02: sobrecarga do operador

A sobrecarga do operador é semelhante à sobrecarga de métodos porque usa o mesmo sinal, mas vários operando para métodos de operador distintos. Então, iniciamos este exemplo declarando uma nova classe "A" após o espaço para nome e biblioteca de cabeçalho. A classe A contém um membro de dados privado do tipo inteiro "V" e uma função construtora A () usada para inicializar a variável "V" com um valor de 5. Aí vem a função do operador para incrementar o valor de "V" por 3. Como o nome mostra, o operador “+” foi sobrecarregado aqui. A função show () está aqui para mostrar o valor incrementado de uma variável “V.Após a criação de um objeto, o construtor a () será executado. O objeto foi usado para chamar a função do operador "++". O OBJ é novamente utilizado para chamar a função show () para exibir o valor incrementado.

#incluir
usando namespace std;
classe A
privado:
na TV;
público:
A (): v (5)
operador void ++ ()
v = v + 3;

void show ()
cout << "Value after increment: " << v << endl;

;
int main ()
Um obj;
++obj;
obj.mostrar();
retornar 0;

Após a compilação, não temos erros. O valor incrementado da variável "V" foi exibido em nossa tela de terminal ao executar este código.

$ g ++ polimorfismo.cc
$ ./a.fora

Exemplo 03: Função substituindo

A classe base e suas subclasses descendentes podem ter o mesmo nome dos métodos. Quando usamos uma instância da subclasse para invocar o método, a função da classe estendida é executada em vez da classe pai. Como resultado, várias funções serão executadas dependendo do objeto que invocava o método. Em C ++, isso é chamado de substituição do método. Então, inicializamos três classes no código. A classe A é a classe pai das duas classes infantis B e C. Todas as classes têm o mesmo nome função, "show ()", exibindo suas especificações via instrução Cout. O método principal () criou 3 objetos para 3 classes para chamar as respectivas funções.

#incluir
usando namespace std;
classe A
público:
void show ()
cout << "Base class A… " << endl;
;
Classe B: Public a
público:
void show ()
cout << "Derived class B… " << endl;
;
classe C: public a
público:
void show ()
cout << "Derived class C… " << endl;
;
int main ()
A1;
O1.mostrar();
B o2;
O2.mostrar();
C o3;
O3.mostrar();
retornar 0;

Temos todos os métodos executados de todas as classes ao executar este arquivo de código.

Exemplo 04: Funções virtuais

Se usarmos uma referência de classe base “Ponteiro” para se referir a um objeto de classe derivada, podemos nem ser capazes de contornar os métodos em C++. Nessas circunstâncias, o uso de métodos virtuais na classe pai garante que o método pode ser substituído. Então, criamos um pai Classe A com sua classe infantil B. Ambas as classes têm o mesmo nome funções, mas a função da classe pai contém a palavra -chave “Virtual.”Em Main (), o objeto de classe B“ B ”foi usado como referência à classe pai“ A ”objeto de ponteiro“ A.”

#incluir
usando namespace std;
classe A
público:
Virtual Void Show ()
cout << "Base class A… " << endl;

;
Classe B: Public a
público:
void show ()
cout << "Derived class B… " retornar 0;

Ao executar este código, o método de classe derivado foi executado usando a palavra-chave virtual na função de mesmo nome definida pela classe pai.

$ g ++ polimorfismo.cc
$ ./a.outg

Conclusão:

Isso se tratava de usar o polimorfismo em C ++ usando alguns de seus conceitos básicos. Para torná -lo suave, abordamos a sobrecarga de funções, a substituição da função, a sobrecarga do operador e o conceito de função virtual. Esperamos o melhor feedback para este trabalho.