C++

Funzione virtuale C++

Funzione virtuale C++
In questo articolo, discuteremo la funzione virtuale nel linguaggio di programmazione C++. Una funzione virtuale viene utilizzata in C++ per ottenere il polimorfismo runtime/dinamico. Vedremo diversi esempi per comprendere il concetto di funzione virtuale in Do++.

Una funzione virtuale è una funzione membro definita nella classe base/classe padre e ridefinita nella classe derivata. La funzione virtuale consente di chiamare la versione della classe derivata della funzione utilizzando il riferimento o il puntatore alla classe base.

Vediamo alcuni esempi per capire il concetto di funzione virtuale.

Nel primo esempio vedremo il comportamento della funzione non virtuale, quindi nel secondo esempio spiegheremo il comportamento di una funzione virtuale.

Esempio 1

Nel seguente codice di esempio, abbiamo due classi: classe base e classe derivata.

La classe base ha una funzione membro, i.e., Schermo(). La classe derivata è ereditata dalla classe base e ha ridefinito la funzione display().

Quindi, abbiamo dichiarato un puntatore al tipo di classe base e assegnato un oggetto della classe derivata. Quindi, quando chiamiamo la funzione display() usando il puntatore del tipo di classe base, verrà chiamata la funzione della classe base. Puoi vedere l'output qui sotto.

Ma, in tali casi, C++ fornisce un modo per chiamare la funzione della classe derivata dichiarando la funzione della classe base come virtuale. Vedremo un altro esempio per capirlo.

#includere
usando lo spazio dei nomi std;
class Base_Class

pubblico:
display vuoto()

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

;
class Classe_derivata:Classe_base pubblica

pubblico:
display vuoto()

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

Esempio 2

In questo esempio, abbiamo definito la funzione display() come una funzione virtuale nella classe base. L'unica differenza rispetto al programma precedente è che abbiamo aggiunto una parola chiave virtuale davanti a "void display()" nella classe base.

Ora, se vedi l'output, stampa "Sono in una classe derivata", che indica che la funzione della classe derivata è chiamata.

La parola chiave virtual (funzione virtuale) nella classe base è responsabile di garantire che venga chiamata la funzione giusta per un oggetto.

#includere
usando lo spazio dei nomi std;
class Base_Class

pubblico:
display vuoto virtuale()

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

;
class Classe_derivata:Classe_base pubblica

pubblico:
display vuoto()

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

Esempio 3

Questo è un altro esempio di funzione virtuale. Come puoi vedere nel programma sottostante, abbiamo definito una classe base, i.e., Animale. Ci sono due classi derivate: Cane e Mucca. Abbiamo definito la funzione eat() come virtuale nella classe base, i.e., Animale. Abbiamo quindi ridefinito la funzione eat() in entrambe le classi derivate, Dog e Cow.  Nella funzione main(), abbiamo un puntatore della classe base, i.e., Animal, e poi ha attaccato la classe derivata, Dog. Quindi, quando chiamiamo la funzione eat() usando il puntatore della classe base, possiamo invocare la versione della classe derivata della funzione eat(), i.e., la funzione eat() dalla classe Dog. Allo stesso modo, quando alleghiamo l'oggetto classe Cow, possiamo quindi invocare la versione della classe derivata della funzione eat(), i.e., la funzione eat() dalla classe Cow. Puoi vedere chiaramente questo comportamento nell'output qui sotto. 

#includere
usando lo spazio dei nomi std;
classe animale

pubblico:
vuoto virtuale mangia()

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

;
classe Cane:animale pubblico

pubblico:
vuoto mangiare()

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

;
classe Mucca: animale pubblico

pubblico:
vuoto mangiare()

cout << "Cow - eat veg!" a_ptr = nuova mucca();
a_ptr->mangia();
restituisce 0;

Conclusione

In questo articolo ho spiegato il concetto di funzione virtuale in Do++. Il C++ supporta diversi tipi di polimorfismo: polimorfismo statico e polimorfismo dinamico. Con l'aiuto di una funzione virtuale, possiamo ottenere il polimorfismo runtime/dinamico. In questo articolo, abbiamo esaminato solo il concetto di funzione virtuale e come ottenere il polimorfismo di runtime. Ho spiegato tre esempi di lavoro per spiegare la funzione virtuale.

Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...
Aggiungi i gesti del mouse a Windows 10 utilizzando questi strumenti gratuiti
Negli ultimi anni computer e sistemi operativi si sono notevolmente evoluti greatly. C'è stato un tempo in cui gli utenti dovevano usare i comandi per...