logo

Sovraccarico di funzioni in C++

L'overloading delle funzioni è una caratteristica della programmazione orientata agli oggetti in cui due o più funzioni possono avere lo stesso nome ma parametri diversi. Quando il nome di una funzione è sovraccaricato con diversi lavori, si parla di sovraccarico della funzione. In Function Overloading il nome della funzione dovrebbe essere lo stesso e gli argomenti dovrebbero essere diversi. L'overload di funzioni può essere considerato come un esempio di caratteristica di polimorfismo in C++.

Se più funzioni hanno lo stesso nome ma i parametri delle funzioni devono essere diversi si parla di sovraccarico delle funzioni.
Se dobbiamo eseguire una sola operazione ed avere lo stesso nome delle funzioni aumenta la leggibilità del programma.
Supponiamo di dover eseguire l'addizione dei numeri forniti ma può esserci un numero qualsiasi di argomenti, se scrivi la funzione come a(int,int) per due parametri e b(int,int,int) per tre parametri allora sarà potrebbe essere difficile comprendere il comportamento della funzione perché il suo nome è diverso.

I parametri devono seguire una o più delle seguenti condizioni per il sovraccarico della funzione:



sindacato contro sindacato tutto
  • I parametri dovrebbero avere un tipo diverso

aggiungi(int a, int b)
aggiungi(doppia a, doppia b)

Di seguito è riportata l'implementazione della discussione di cui sopra:

C++




#include> using> namespace> std;> void> add(>int> a,>int> b)> {> >cout <<>'sum = '> << (a + b);> }> void> add(>double> a,>double> b)> {> >cout << endl <<>'sum = '> << (a + b);> }> // Driver code> int> main()> {> >add(10, 2);> >add(5.3, 6.2);> >return> 0;> }>

>

>

Produzione

sum = 12 sum = 11.5>
  • I parametri dovrebbero avere un numero diverso

aggiungi(int a, int b)
aggiungi(int a, int b, int c)

Di seguito è riportata l'implementazione della discussione di cui sopra:

C++




#include> using> namespace> std;> void> add(>int> a,>int> b)> {> >cout <<>'sum = '> << (a + b);> }> void> add(>int> a,>int> b,>int> c)> {> >cout << endl <<>'sum = '> << (a + b + c);> }> // Driver code> int> main()> {> >add(10, 2);> >add(5, 6, 4);> >return> 0;> }>

>

>

Produzione

sum = 12 sum = 15>
  • I parametri dovrebbero avere una sequenza diversa di parametri.

aggiungi(int a, double b)
aggiungi(doppia a, int b)

Di seguito è riportata l'implementazione della discussione di cui sopra:

C++




#include> using> namespace> std;> void> add(>int> a,>double> b)> {> >cout<<>'sum = '><<(a+b);> }> void> add(>double> a,>int> b)> {> >cout<'sum = '<<(a+b); } // Driver code int main() { add(10,2.5); add(5.5,6); return 0; }>

>

lista di array
>

Produzione

sum = 12.5 sum = 11.5>

Di seguito è riportato un semplice esempio C++ per dimostrare l'overload delle funzioni.

CPP




#include> using> namespace> std;> void> print(>int> i) {> >cout <<>' Here is int '> << i << endl;> }> void> print(>double> f) {> >cout <<>' Here is float '> << f << endl;> }> void> print(>char> const> *c) {> >cout <<>' Here is char* '> << c << endl;> }> int> main() {> >print(10);> >print(10.10);> >print(>'ten'>);> >return> 0;> }>

>

>

Produzione

 Here is int 10 Here is float 10.1 Here is char* ten>

C++




#include> using> namespace> std;> void> add(>int> a,>int> b)> {> >cout<<>'sum ='><<(a+b);> }> void> add(>int> a,>int> b,>int> c)> {> >cout<'sum ='<<(a+b+c); } main() { add(10,2); add(5,6,4); return 0; }>

>

>

C++


saltare l'elenco



#include> using> namespace> std;> void> add(>int> a,>double> b)> {> >cout<<>'sum ='><<(a+b);> }> void> add(>double> a,>int> b)> {> >cout<'sum ='<<(a+b); } main() { add(10,2.5); add(5.5,6); return 0; }>

>

>

Come funziona il sovraccarico delle funzioni?

  • Corrispondenza esatta :- (Nome della funzione e parametro)
  • Se UN non è stata trovata una corrispondenza esatta:

->Char, Unsigned char e short vengono promossi a int.

->Float viene promosso a double

  • Se non viene trovata alcuna corrispondenza :

->C++ tenta di trovare una corrispondenza tramite la conversione standard.

  • ALTRO ERRORE
  1. Overloading della funzione e tipo restituito
  2. Funzioni che non possono essere sovraccaricate in C++
  3. Overloading delle funzioni e parola chiave const
  4. Sovraccarico di funzioni e override di funzioni in C++

Articoli recenti sull'overloading delle funzioni in C++