C++ function overloading: een praktische gids
C++ Function Overloading
Ontdek hoe C++ je laat meerdere functies met dezelfde naam maar verschillende handtekeningen definiëren, geïllustreerd met praktische voorbeelden.
In C++ mogen twee functies dezelfde naam delen zolang hun parameterlijsten verschillen in type, aantal of volgorde. Deze varianten heten overloaded functions.
Bijvoorbeeld:
// Dezelfde naam, andere argumenten int test() { } int test(int a) { } float test(double a) { } int test(int a, double b) { }
Alle vier declaraties hierboven vormen een geldige overload set. Let op dat return types irrelevant zijn voor overload resolution; alleen de parameterlijst telt. Bijvoorbeeld:
// Compilatie fout: identieke handtekeningen int test(int a) { } double test(int b){ }
Hier hebben beide functies dezelfde naam, type en aantal argumenten, dus de compiler wijst de duplicaat af.
Voorbeeld 1: Overloading met Verschillende Parameter Types
// Absolute waarde berekenen voor int en float #include <iostream> using namespace std; // float versie float absolute(float var){ return (var < 0.0f) ? -var : var; } // int versie int absolute(int var){ return (var < 0) ? -var : var; } int main(){ cout << "Absolute value of -5 = " << absolute(-5) << endl; cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; }
Output
Absolute value of -5 = 5 Absolute value of 5.5 = 5.5
Dit programma overloaded absolute(); de compiler selecteert de juiste versie gebaseerd op het argument type.
Voorbeeld 2: Overloading met Verschillende Aantallen Parameters
#include <iostream> using namespace std; // Twee-parameter versie void display(int var1, double var2){ cout << "Integer: " << var1; cout << " & Double: " << var2 << endl; } // Enkele double parameter void display(double var){ cout << "Double: " << var << endl; } // Enkele int parameter void display(int var){ cout << "Integer: " << var << endl; } int main(){ int a = 5; double b = 5.5; display(a); display(b); display(a, b); return 0; }
Output
Integer: 5 Double: 5.5 Integer: 5 & Double: 5.5
De call naar display() resolveert naar de juiste overload gebaseerd op het aantal en type argumenten.
Let op: Standaard library functies zoals sqrt() zijn zwaar overgeladen, accepten int, float, double en meer, wat flexibiliteit aan developers biedt.
C Taal
- Method overloading in C#: concepten, voorbeelden en best practices
- Constructor overloading in C#: flexibele klassen ontwerpen
- C++ operators: complete gids met praktische voorbeelden
- C++ comments: best practices voor leesbare, onderhoudbare code
- Arrays doorgeven aan functies in C++: een praktische gids
- C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
- Hoe je 1D- en 2D-arrays doorgeeft aan functies in C – Een praktische gids
- C++ Operator Overloading – Praktische Handleiding met Code‑Voorbeelden
- C++ Functies Uitgelegd met Praktische Codevoorbeelden
- C-functies: Structuur, declaratie, aanroep en argumenten
- C++ Overloading Beheersen: Functies & Operators Uitgelegd