In C ++, se una funzione con lo stesso nome esiste sia nella classe di base che derivata, la funzione di classe derivata prevalga la funzione di classe base. Ciò dimostra che se una funzione viene chiamata con l'oggetto della classe derivata, anziché la funzione della classe base, la funzione di classe derivata verrà eseguita. Questo è noto come funzione che si estende in c++, e consente alle classi derivate di modificare il comportamento della funzione di classe base per soddisfare le loro esigenze specifiche. Prevalente è importante poiché consente la riusabilità del codice, rendendo più facile per i programmatori modificare il codice e rimuovere la necessità di scrivere il codice da zero.
In questo articolo, mostreremo come usare il "oltrepassare" nel linguaggio di programmazione C ++.
Contenuto per questo articolo:
Come utilizzare il sovraccarico in C++
Usare 'oltrepassare' In C ++, dobbiamo semplicemente aggiungerlo dopo la dichiarazione della funzione nella classe derivata. Ecco un esempio:
Esempio 1: funzione C ++ prevalente
Il codice fornito dimostra la funzione prevalente in c++.
#includere
Utilizzo dello spazio dei nomi std;
Class Parent
pubblico:
void linuxhint_print ()
cout << "This is Base Function" << endl;
;
Class Child: Public Parent
pubblico:
void linuxhint_print ()
cout << "This is Derived Function" << endl;
;
int main ()
Figlio Child_Deriveved;
Child_deraved.Linuxhint_print ();
restituzione 0;
Abbiamo una classe genitore con una funzione denominata Linuxhint_print () che stampa un messaggio alla console. Creiamo quindi una classe figlio che eredita pubblicamente dalla classe genitore e sovrascrive il Linuxhint_print () funzione con la propria implementazione che stampa anche un messaggio sulla console.
Nella funzione principale (), un oggetto della classe figlio viene creato e chiamato come Linuxhint_print () funzione. Poiché la classe figlio sovrascrive il file Linuxhint_print () funzione della classe genitore, l'output sarà Questa è una funzione derivata invece di Questa è la funzione di base.
Esempio 2: Funzione sovrascritta C ++ Access alla classe base
A volte, potremmo voler chiamare la funzione sovrascritta nella classe base della classe derivata. Possiamo farlo usando l'operatore di risoluzione dell'ambito "::. Ecco un esempio:
#includere
Utilizzo dello spazio dei nomi std;
base di classe
pubblico:
virtual void test ()
cout << "This is Base Class" << endl;
;
Classe derivata: base pubblica
pubblico:
void test ()
Base :: test ();
cout << "This is Derived Class" << endl;
;
int main ()
Derivato deriiedobj;
DerivedObj.test();
restituzione 0;
Il codice sopra definisce due classi Base E Derivato, dove la classe derivata eredita dalla classe base. Entrambe le classi hanno una funzione denominata test () che visualizza il messaggio sulla console. La funzione Test () nella classe base è dichiarata virtuale, indicando che può essere sovrascritta da classi derivate.
Nella classe derivata, sovrascriviamo la funzione test () e chiamiamo la funzione test () della classe base utilizzando Base :: test () da stampare Questa è base Classe alla console. Quindi stampiamo Questa è una classe derivata alla console dopo aver chiamato la funzione Test () della classe base.
Se creiamo un oggetto della classe derivata e chiamiamo la funzione test (), l'output sarà Questa è base Classe seguito da Questa è una classe derivata, indicando che la classe derivata ha sovrascritto la funzione test () della classe base e ha aggiunto il proprio comportamento.
Esempio 3: C ++ Call Call Overlighden Function dalla classe derivata
Possiamo anche chiamare la funzione sovrascritta nella classe base dall'esterno della gerarchia di classe usando un puntatore alla classe base. Ecco un esempio:
Questo codice dimostra la funzione di prevalenza in C ++ usando l'eredità.
#includere
Utilizzo dello spazio dei nomi std;
base di classe
pubblico:
void test ()
cout << "This is Base Function" << endl;
;
Classe derivata: base pubblica
pubblico:
void test ()
cout << "This is Derived Function" << endl;
// Chiama la funzione sovrascritta
Base :: test ();
;
int main ()
Derivato derivato1;
derivato1.test();
restituzione 0;
Ci sono due classi definite, base e derivate. Qui nel codice sopra la classe derivata è derivata dalla base con l'aiuto dell'impepitore di eredità pubblica.
Entrambe le classi hanno una funzione membro denominata test(), che visualizza un messaggio sulla console. Tuttavia, nella classe derivata, la funzione test () è sovrascritta per stampare un messaggio diverso e anche chiamare la funzione test () della classe base utilizzando l'operatore di risoluzione dell'ambito (: :).
La funzione principale () ha un oggetto di classe derivata e la sua funzione test () è chiamata. Quando la funzione Test () viene chiamata sull'oggetto Derited1, stampa Questa è una funzione derivata alla console e quindi chiama la funzione test () della classe base, che stampica Questa è la funzione di base alla console.
Esempio 4: funzione sovrascritta C ++ Call usando il puntatore
Possiamo anche chiamare la funzione sovrascritta nella classe base usando un puntatore alla classe derivata. Ecco un esempio:
#includere
Utilizzo dello spazio dei nomi std;
base di classe
pubblico:
void test ()
cout << "This is Base Function" << endl;
;
Classe derivata: base pubblica
pubblico:
void test ()
cout << "This is Derived Function" << endl;
;
int main ()
Derivato derivato1;
// puntatore a derivato1
Base* ptr = &derived1;
// Chiama la funzione di classe base
ptr-> test ();
restituzione 0;
Nel programma di cui sopra sono definite due classi, base e derivate. Entrambe le classi hanno una funzione membro denominata test () che visualizza un messaggio sulla console.
Nel principale() funzione, viene creato un oggetto della classe derivata e viene creato e inizializzato un puntatore PTR della base di tipo.
La funzione test () è chiamata sul file PTR puntatore, che è di tipo base. La funzione Test () nella classe base può essere sovrascritta in qualsiasi classe derivata usando il puntatore.
Qui quando la funzione test () viene chiamata sul file PTR puntatore, stampe Questa è la funzione di base alla console anziché Questa è una funzione derivata.
Differenza tra sovrascritta e sovraccarico in C++
Ivalgale e il sovraccarico sono due concetti importanti nella programmazione orientata agli oggetti. In C ++, vengono utilizzati per fornire un comportamento polimorfico, che consente a oggetti diversi di rispondere in modo diverso allo stesso messaggio.
Sovraccarico sta creando più funzioni con lo stesso nome ma ha parametri o tipi di argomentazioni diversi.
Prevalente, D'altra parte, si riferisce al processo di ridefinizione di una funzione in una classe derivata che contiene lo stesso nome di una funzione di classe base.
IL differenza chiave tra il sovraccarico e il sovraccarico c'è che il sovraccarico implica la ridefinizione di una funzione in una classe derivata con lo stesso nome e la firma di quella nella classe base. Al contrario, il sovraccarico prevede la creazione di più attività con lo stesso nome, ma parametri o tipi di argomentazioni diversi.
Conclusione
IL 'oltrepassare' In C ++ può garantire che la funzione nella classe derivata stia preparando la funzione virtuale della classe base. Questo articolo discute diversi modi di sovrascrivere una funzione. In C ++, la funzione può essere ignorata in entrambi i modi dalla base a derivata o viceversa, inoltre possiamo definire un puntatore a una classe di base e sovrascrivere una funzione derivata su di essa.