C++-Funktionenüberladung: Ein praktischer Leitfaden
C++-Funktionenüberladung
Entdecken Sie, wie C++ es Ihnen ermöglicht, mehrere Funktionen mit demselben Namen, aber unterschiedlichen Signaturen zu definieren, illustriert mit praktischen Beispielen.
In C++ dürfen zwei Funktionen denselben Namen haben, solange ihre Parameterlisten in Typ, Anzahl oder Reihenfolge unterschiedlich sind. Diese Varianten nennt man überladene Funktionen.
Zum Beispiel:
// Gleicher Name, unterschiedliche Argumente
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
Alle vier Deklarationen oben stellen einen gültigen Überladungssatz dar. Beachten Sie, dass Rückgabetypen für die Überladungsauflösung irrelevant sind; nur die Parameterliste zählt. Zum Beispiel:
// Kompilierfehler: identische Signaturen
int test(int a) { }
double test(int b) { }
Hier haben beide Funktionen denselben Namen, denselben Typ und dieselbe Anzahl an Argumenten, daher lehnt der Compiler das Duplikat ab.
Beispiel 1: Überladung mit unterschiedlichen Parametertypen
// Betrag für int und float berechnen
#include <iostream>
using namespace std;
// float-Version
float absolute(float var)
{
return (var < 0.0f) ? -var : var;
}
// int-Version
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;
}
Ausgabe
Absolute value of -5 = 5 Absolute value of 5.5 = 5.5
Dieses Programm überlädt absolute(); der Compiler wählt die passende Version basierend auf dem Argumenttyp aus.
Beispiel 2: Überladung mit unterschiedlicher Parameteranzahl
#include <iostream>
using namespace std;
// Zwei-Parameter-Version
void display(int var1, double var2)
{
cout << "Integer: " << var1;
cout << " & Double: " << var2 << endl;
}
// Einzelner double-Parameter
void display(double var)
{
cout << "Double: " << var << endl;
}
// Einzelner 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;
}
Ausgabe
Integer: 5 Double: 5.5 Integer: 5 & Double: 5.5
Der Aufruf von display() löst sich basierend auf Anzahl und Typ der Argumente zur korrekten Überladung auf.
Hinweis: Standardbibliotheksfunktionen wie sqrt() sind stark überladen und akzeptieren int, float, double und mehr, was Entwicklern Flexibilität bietet.
C Sprache
- Methodenüberladung in C# meistern: Konzepte, Beispiele und Best Practices
- Konstruktorüberladung in C# meistern
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C++-Kommentare: Best Practices für lesbaren, wartbaren Code
- Arrays an Funktionen in C++ übergeben: Ein praktischer Leitfaden
- C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
- Arrays an Funktionen in C übergeben: 1D & 2D – Praxisleitfaden
- C++ Operator‑Overloading: Praktischer Leitfaden mit Code‑Beispielen
- C++-Funktionen erklärt: Mit praktischen Code-Beispielen
- C-Funktionen meistern: Struktur, Deklaration & Best Practices