C ++

Função Virtual C ++

Função Virtual C ++
Neste artigo, vamos discutir a função virtual na linguagem de programação C ++. Uma função virtual é usada em C ++ para alcançar o polimorfismo de tempo de execução / dinâmico. Veremos vários exemplos para entender o conceito da função virtual em C++.

Uma função virtual é uma função de membro que é definida na classe base / classe pai e redefinida na classe derivada. A função virtual permite chamar a versão da classe derivada da função usando a referência ou ponteiro para a classe base.

Vamos ver alguns exemplos para entender o conceito de função virtual.

No primeiro exemplo, veremos o comportamento da função não virtual e, no segundo exemplo, explicaremos o comportamento de uma função virtual.

Exemplo 1

No código de exemplo a seguir, temos duas classes: classe base e classe derivada.

A classe base tem uma função-membro, i.e., exibição(). A classe derivada é herdada da classe base e redefinida a função display ().

Em seguida, declaramos um ponteiro para o tipo de classe base e atribuímos um objeto da classe derivada. Então, quando chamamos a função display () usando o ponteiro do tipo de classe base, a função da classe base será chamada. Você pode ver a saída abaixo.

Mas, em tais casos, C ++ fornece uma maneira de chamar a função da classe derivada, declarando a função da classe base como virtual. Veremos outro exemplo para entender isso.

#incluir
usando namespace std;
classe Base_Class

público:
void display ()

cout << "I am in Base class" << endl;

;
class Derived_Class: public Base_Class

público:
void display ()

cout << "I am in Derived class" return 0;

Exemplo 2

Neste exemplo, definimos a função display () como uma função virtual na classe base. A única diferença em relação ao programa anterior é que adicionamos uma palavra-chave virtual na frente de “void display ()” na classe base.

Agora, se você vir a saída, ele imprime "Estou em uma classe derivada", o que indica que a função da classe derivada é chamada.

A palavra-chave virtual (função virtual) na classe base é responsável por garantir que a função correta seja chamada para um objeto.

#incluir
usando namespace std;
classe Base_Class

público:
display vazio virtual ()

cout << "I am in Base class" << endl;

;
class Derived_Class: public Base_Class

público:
void display ()

cout << "I am in Derived class" return 0;

Exemplo 3

Este é outro exemplo de função virtual. Como você pode ver no programa abaixo, definimos uma classe base, i.e., Animal. Existem duas classes derivadas: Cachorro e Vaca. Definimos a função eat () como virtual na classe base, i.e., Animal. Em seguida, redefinimos a função eat () em ambas as classes derivadas, Cachorro e Vaca.  Na função main (), temos um ponteiro da classe base, i.e., Animal e, em seguida, anexou a classe derivada, Dog. Portanto, quando chamamos a função eat () usando o ponteiro da classe base, podemos invocar a versão da classe derivada da função eat (), i.e., a função eat () da classe Dog. Da mesma forma, quando anexamos o objeto da classe Cow, podemos invocar a versão da classe derivada da função eat (), i.e., a função eat () da classe Cow. Você pode ver claramente esse comportamento na saída abaixo. 

#incluir
usando namespace std;
classe animal

público:
virtual void eat ()

cout << "Animal - base class - undefined eating behavior." << endl;

;
classe Dog: public Animal

público:
void eat ()

cout << "Dog - eat non-veg!" << endl;

;
classe Cow: public Animal

público:
void eat ()

cout << "Cow - eat veg!" a_ptr = nova vaca ();
a_ptr-> comer ();
return 0;

Conclusão

Neste artigo, expliquei o conceito de função virtual em C++. O C ++ suporta diferentes tipos de polimorfismo - polimorfismo estático e polimorfismo dinâmico. Com a ajuda de uma função virtual, podemos alcançar o polimorfismo runtime / dinâmico. Neste artigo, vimos apenas o conceito de função virtual e como obter polimorfismo de tempo de execução. Eu expliquei três exemplos de trabalho para explicar a função virtual.

OpenTTD vs Simutrans
Criar sua própria simulação de transporte pode ser divertido, relaxante e extremamente atraente. É por isso que você precisa ter certeza de experiment...
Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...