Sovraccarico di funzioni in C ++: tutto ciò che devi sapere



Questo articolo ti fornirà una conoscenza dettagliata e completa dell'overload di funzioni in C ++ con un sacco di esempi da comprendere.

Il C ++ è uno di quei linguaggi di programmazione molto flessibili e copre anche diverse caratteristiche della programmazione orientata agli oggetti. Il sovraccarico è un'altra caratteristica di questo linguaggio di programmazione.I seguenti puntatori saranno trattati in questo articolo 'Sovraccarico di funzioni in C ++ '-

Sovraccarico in C ++

Quando creiamo due o più membri di una classe con lo stesso nome ma diversi per numero o tipo di parametri, è noto come sovraccarico C ++. In C ++, possiamo sovraccaricare:





  • metodi,
  • costruttori e
  • proprietà indicizzate

Tipi di sovraccarico in C ++

types-of-overloading-in-c++

Cos'è il sovraccarico di funzioni in C ++?

L'overloading delle funzioni in C ++ può essere definito come il processo di avere due o più funzioni membro di una classe con lo stesso nome, ma diversi nei parametri. Nel sovraccarico della funzione, la funzione può essere ridefinita utilizzando diversi tipi di argomenti o un diverso numero di argomenti in base al requisito. È solo attraverso queste differenze che il compilatore può distinguere tra le due funzioni sovraccaricate.



converti double in integer in java

Uno dei principali vantaggi del sovraccarico delle funzioni è che aumenta la leggibilità del programma perché non è necessario utilizzare nomi diversi per la stessa azione più e più volte.

Modificando il numero di argomenti

In questo modo di sovraccarico di funzioni, definiamo due funzioni con gli stessi nomi ma un numero diverso di parametri dello stesso tipo. Ad esempio, nel programma menzionato di seguito, abbiamo creato due funzioni add () per restituire la somma di due e tre numeri interi.

// definizione della prima funzione int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Qui si dice che la funzione add () è sovraccarica, poiché ha due definizioni, una che accetta due argomenti e un'altra che accetta tre argomenti. La funzione add () che verrà chiamata dipende dal numero di argomenti.



int main () {add (10, 20) // add () con 2 parametri sarà chiamato add (10, 20, 30) // sum () con 3 parametri sarà chiamato}
#include utilizzando lo spazio dei nomi std int add (int a, int b) {cout<< a+b <

Nell'esempio sopra, sovraccarichiamo la funzione add () cambiando il suo numero di argomenti. Per prima cosa definiamo una funzione add () con due parametri, quindi la sovraccarichiamo definendo di nuovo la funzione add () ma questa volta con tre parametri.

Avendo diversi tipi di argomenti

In questo metodo, definiamo due o più funzioni con lo stesso nome e lo stesso numero di parametri, ma il tipo di dati utilizzato per questi parametri è diverso. Ad esempio, in questo programma, abbiamo tre funzioni add (), la prima riceve due argomenti interi, la seconda riceve due argomenti float e la terza riceve due doppi argomenti.

#include usando lo spazio dei nomi std int add (int x, int y) // prima definizione {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

Nell'esempio sopra, definiamo la funzione add () tre volte. Prima usando interi come parametri, secondo usando float come parametri e terzo usando double come parametro.
Quindi sovrascriviamo la funzione add () due volte.

Vantaggi della funzione Overloading in C ++

  • Usiamo il sovraccarico delle funzioni per salvare lo spazio di memoria, la coerenza e la leggibilità del nostro programma.

  • Con il concetto di sovraccarico della funzione di utilizzo, possiamo sviluppare più di una funzione con lo stesso nome

  • L'overloading delle funzioni mostra il comportamento del polimorfismo che ci consente di ottenere un comportamento diverso, sebbene ci saranno alcuni collegamenti che utilizzano lo stesso nome della funzione.

  • Il sovraccarico delle funzioni velocizza l'esecuzione del programma.

  • Il sovraccarico delle funzioni viene utilizzato per il riutilizzo del codice e anche per risparmiare memoria.

  • Aiuta l'applicazione a caricare il metodo di classe in base al tipo di parametro.

    implementare min heap in java
  • La manutenzione del codice è facile.

Svantaggi del sovraccarico di funzioni in C ++

  • Le dichiarazioni di funzione che differiscono solo per il tipo restituito non possono essere sovraccaricate con il processo di sovraccarico della funzione.
  • Le dichiarazioni di funzioni membro con gli stessi parametri o gli stessi tipi di nome non possono essere sovraccaricate se una di esse viene dichiarata come funzione membro statica.
  • classe XYZ {static void func () void func () // errore}

Sovraccarico di funzioni e ambiguità

Quando il compilatore non è in grado di decidere quale funzione deve richiamare per prima tra le funzioni sovraccaricate, questa situazione è nota come ambiguità di sovraccarico delle funzioni. Il compilatore non esegue il programma se mostra un errore di ambiguità. Cause dell'ambiguità di sovraccarico delle funzioni:

  • Tipo di conversione.
  • Funzione con argomenti predefiniti.
  • Funzione con passaggio per riferimento

Tipo di conversione:

#include usando lo spazio dei nomi std void function (float) void function (int) void function (float x) {std :: cout<< 'Value of x is : ' <

L'esempio precedente genera un errore: 'la chiamata della' funzione (doppia) 'sovraccaricata è ambigua'. La funzione (3.4) chiamerà la prima funzione. La funzione (34) chiama la seconda funzione secondo la nostra previsione. Ma questo non è ciò che accade perché in C ++ tutte le costanti a virgola mobile sono trattate come double e non come float. Se sostituiamo la variabile float con una doppia variabile, il programma funzionerà bene. Pertanto lo chiamiamo un errore di conversione del tipo da float a double.

Funzione con argomenti predefiniti:

#include usando lo spazio dei nomi std void function (int) void function (int, int) void function (int x) {std :: cout<< 'Value of x is : ' <

L'esempio precedente restituisce un errore che dice 'la chiamata di 'fun (int)' sovraccaricata è ambigua', questo perché la funzione (int y, int z = 12) può essere chiamata in due modi:

  1. Chiamando la funzione con un argomento (e prenderà automaticamente il valore di z = 12)
  2. Chiamando la funzione con due argomenti.

Quando chiamiamo la funzione: function (12) riempiamo completamente la condizione sia della funzione (int) che della funzione (int, int), quindi il compilatore entra in un'ambiguità e mostra un errore.

Funzione con passaggio per riferimento

tutorial amazon ec2 per principianti
#include usando lo spazio dei nomi std void function (int) void function (int &) void function (int a) {std :: cout<< 'Value of a is : ' < 

Il programma precedente restituisce un errore che dice 'la chiamata di 'fun (int &)' sovraccaricata è ambigua'. Come si vede, la prima funzione accetta un argomento intero e la seconda funzione accetta un parametro di riferimento come argomento. In questo caso, il compilatore non è in grado di capire quale funzione è necessaria all'utente in quanto non c'è differenza sintattica tra il divertimento (int) e il divertimento (int &) quindi scatta un errore di ambiguità.

Con questo, arriviamo alla fine di questo sovraccarico di funzioni in C ++. Se desideri saperne di più, dai un'occhiata al da Edureka, una società di apprendimento online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.