Introduzione al sovraccarico e override in C ++

Iniziamo con le definizioni di base per sovraccarico e override in C ++.

Sovraccarico : il nome della funzione è lo stesso ma i parametri e il tipo di ritorno cambiano. Dato che conosceremo la differenza tra le funzioni sovraccaricate durante il tempo di compilazione, si parla anche di polimorfismo del tempo di compilazione.

Sostituzione: questa è una caratteristica del linguaggio di programmazione orientata agli oggetti in cui la funzione della classe figlio ha lo stesso nome della funzione della classe del genitore. Poiché la funzionalità prevalente viene visualizzata nell'immagine una volta che l'oggetto è stato dichiarato e si accede alle funzioni utilizzando gli oggetti; cioè durante l'esecuzione del codice, questo concetto di override è anche chiamato polimorfismo del tempo di esecuzione.

Abbiamo la loro sintassi e i loro modi di programmazione nelle sezioni successive.

Sintassi di sovraccarico e override

Ecco la sintassi del sovraccarico e dell'override fornita di seguito.

Sintassi di sovraccarico:

return_type function_name ( int param_1, string param_2)
(
//function definition
)
return_type_2 function_name ( int param_1, string param_2)
(
//function definition
)
return_type function_name ( int param_1, int param_2)
(
//function definition
)

Tutti e tre insieme possono formare un esempio del concetto di sovraccarico.

Sovrascrivere la sintassi:

Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);Class B : Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);

Quanto sopra è la sintassi per la funzionalità di sostituzione. L'output principale può essere dedotto una volta che dichiariamo un oggetto e chiamiamo quegli stessi metodi dalla Classe A e dalla Classe B. Nella funzionalità di sostituzione dell '"Oggetto" gioca un ruolo importante.

Ora vediamo un esempio ciascuno per conoscere meglio la loro funzionalità.

Esempi di sovraccarico e override in C ++

Ecco gli esempi di sovraccarico e override in C ++ con l'output indicato di seguito:

Esempio n. 1 - Sovraccarico

Cominciamo con un semplice programma.

Codice:

#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)

Produzione:

Ora, cosa succede se si danno valori di un tipo di dati errati per le variabili a, b?

Codice:

int main()
(
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a, b);
)

Ho cambiato solo la parte principale dal programma sopra, quindi ecco l'output.

produzione:

Ci dà l'output mentre sta per convertire il valore float in tipo di dati int e ci dà l'output.

Ora come esercizio puoi provare a cambiare il tipo e i parametri di ritorno della funzione e giocare con loro.

Esempio n. 2 - Sostituzione

Di seguito possiamo avere un esempio per una funzionalità prioritaria in C ++.

Codice:

#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)

Produzione:

Attraverso il codice sopra, possiamo scoprire che quando il riferimento dell'oggetto di prima classe viene assegnato all'oggetto creato rispetto alla nostra seconda classe. E poi quando abbiamo avuto accesso al metodo override usando l'oggetto della classe base, possiamo chiaramente notare che l'output della classe derivata è stato visualizzato. Questo concetto si chiama override. La prima e la seconda classe sono rispettivamente la classe base e derivata. L'output di quanto sopra è un sotto:

Come esercizio puoi provare a sovrascrivere e sovraccaricare una funzione insieme e verificare se è possibile o controllare come risulta l'output?

Come funziona?

Sovraccarico: qui non c'è alcun punto speciale di cui possiamo prendere nota. Dobbiamo assicurarci che il tipo di ritorno o i parametri all'interno della funzione possano variare. Se guardiamo sopra alla struttura di programmazione, le funzioni vengono dichiarate per prime e viene data la loro implementazione.

Sostituzione: la sintassi dell'ereditarietà e l'implementazione delle funzioni sono i punti chiave da notare qui. Nell'esempio sopra possiamo notare che la dichiarazione di funzione con la parola chiave pubblica è abbastanza diversa.

E in C ++, la definizione della classe termina con un punto e virgola (;) e se dobbiamo ereditare la classe base nella classe figlio, usiamo il simbolo due punti (:). La funzionalità principale della sostituzione viene osservata quando gli oggetti vengono dichiarati e inizializzati per la classe. Dopo aver chiamato le funzioni utilizzando gli oggetti, possiamo quindi comprendere chiaramente il concetto di sostituzione.

vantaggi

  • L'unico vantaggio principale di questi scavalcamenti e sovraccarichi è il risparmio di tempo.
  • Salva spazio di memoria.
  • La leggibilità del codice è aumentata.
  • Qui, per il concetto di sovraccarico delle funzioni, possiamo usare nomi di funzioni diverse per operazioni diverse, eliminando l'uso di nomi di funzioni diverse.
  • La flessibilità e la manutenibilità del codice diventano più facili.
  • In caso di sostituzione, la classe figlio può avere funzioni di classe genitore e può anche avere la propria implementazione di quella funzione.
  • È possibile fare riferimento agli oggetti e le funzioni della classe padre e della classe figlio sono accessibili dalla classe figlio.

Conclusione

Ora abbiamo capito chiaramente i concetti di sovraccarico e di scavalcamento. Nel sovraccarico, dobbiamo assicurarci che la differenza nelle funzioni sovraccaricate sia basata sul tipo di ritorno o sui parametri, sebbene la definizione della funzione al loro interno sia uguale o diversa.

E nel caso della sostituzione, poiché si tratta di un concetto di programmazione orientato agli oggetti, possiamo utilizzare solo sotto forma di classi utilizzando la funzionalità dell'ereditarietà.

Articoli consigliati

Questa è una guida per sovraccarico e override in C ++. Qui discutiamo dell'introduzione, di come funziona, della sintassi, degli esempi e dei vantaggi del sovraccarico e dell'override in C ++ con l'implementazione del codice. Puoi anche consultare i seguenti articoli per saperne di più -

  1. Sovraccarico in C ++
  2. Sovraccarico vs Sostituzione
  3. Sostituzione in PHP
  4. Sostituzione in C ++
  5. Sostituzione in Java
  6. Polimorfismo in Java
  7. Principali 11 caratteristiche e vantaggi di C ++
  8. Sostituzione in Python | Funzione e regole

Categoria: