Sostituzione delle funzioni C++

C Function Overriding



In questo articolo, tratteremo l'override delle funzioni nel linguaggio di programmazione C++. C++ supporta il polimorfismo di runtime.

Nell'override delle funzioni, la classe figlio ridefinisce la funzione che è già definita nella sua classe padre.







Consente al programmatore di fornire funzionalità derivate specifiche della classe (anche se è definita nella classe base).



Ora vedremo alcuni esempi e capiremo il concetto di override della funzione in C++.



Esempio 1

Ho definito due classi nel codice di esempio seguente: una classe base e una classe derivata. La classe base ha una funzione membro, ad esempio disp(). La Derived_Class viene ereditata dalla Base_Class. La funzione disp() è presente in Base_Class e quindi ridefinita in Derived_Class.





Nella funzione main(), viene creato un oggetto di Derived_Class, cioè d. Quindi, chiamiamo la funzione disp() sull'oggetto classe derivata, quindi verrà invocata la funzione nella classe derivata. La versione della classe base viene ignorata qui. Puoi vedere sotto l'output come - funzione disp() nella classe derivata.

#includere

usando lo spazio dei nomi std;

//classe base
class Base_Class
{
pubblico:
vuotodisp()
{
costo<< 'funzione disp() nella classe base.' <<fine;
}

};

//classe derivata
class Derived_Class:pubblico Base_Class
{
pubblico:
vuotodisp()
{
costo<< 'funzione disp() nella classe derivata' <<fine;
}
};

intprincipale()
{
Derived_Class d;
D.disp(); //disp() funzione sull'oggetto classe derivata
Restituzione 0;
}



Esempio-2

In questo esempio, vedremo come chiamare deliberatamente la versione della classe base della funzione tramite l'oggetto classe derivata. Nella definizione della funzione della classe derivata, usiamo l'operatore di risoluzione dell'ambito [::] per chiamare la versione della classe base della funzione.

#includere

usando lo spazio dei nomi std;

class Base_Class
{
pubblico:
vuotodisp()
{
costo<< 'funzione disp() nella classe base.' <<fine;
}

};

class Derived_Class:pubblico Base_Class
{
pubblico:
vuotodisp()
{
Classe_base::disp(); //Chiama la versione della classe base di disp()
}
};

intprincipale()
{
Derived_Class d;
D.disp();
Restituzione 0;
}

Esempio-3

Questo è un altro esempio di override delle funzioni. In questo esempio, abbiamo creato una classe genitore – Animal e due classi derivate – Duck e Dog. La classe base, ovvero la classe Animal, ha una funzione membro sound().

Nella classe derivata/classe figlia, ovvero Dog, abbiamo ridefinito la stessa funzione, ovvero sound(), per sovrascrivere la sua definizione di classe base. Allo stesso modo, nell'altra classe derivata, ovvero Duck, abbiamo ridefinito la stessa funzione, ovvero sound().

Nella funzione main(), abbiamo creato l'oggetto cane di Dog e duck of Duck. Quindi, ora quando chiamiamo la funzione sound() per cane e anatra, verrà chiamata la versione della classe derivata della funzione sound(). Puoi vedere l'output del programma come mostrato di seguito. Quindi, con l'aiuto dell'override della funzione, possiamo invocare la funzione specifica della classe derivata.

#includere

usando lo spazio dei nomi std;

classe animale
{
pubblico:
vuotosuono()
{
costo<< 'Suono animale!' <<fine;
}

};

//Classe derivata – Classe cane
classe cane:animale pubblico
{
pubblico:
vuotosuono()
{
costo<< 'Suono di cane - abbaia.' <<fine;
}
};

//Classe derivata – Classe Anatra
classe Anatra:animale pubblico
{
pubblico:
vuotosuono()
{
costo<< 'Suono d'anatra - ciarlatano.' <<fine;
}
};


intprincipale()
{
Cane Cane;
anatra anatra;

cane.suono(); //suono() di cane
anatra.suono(); //suono() di anatra

Restituzione 0;
}

Conclusione

In questo articolo, ho spiegato la funzione di override in C++ . Il linguaggio C++ supporta il polimorfismo di runtime. L'override delle funzioni aiuta a raggiungere il polimorfismo di runtime in C++. Questo articolo ha esaminato il concetto di sostituzione delle funzioni e come ottenere il polimorfismo di runtime utilizzando la sostituzione delle funzioni.