Heim > Artikel > Backend-Entwicklung > C++-Kompilierungsfehler: Überladene Funktionen gelten nur dann als überladen, wenn ihre Parameter unterschiedlich sind.
Das Überladen von Funktionen ist oft eine sehr nützliche Funktion, wenn Sie C++-Code schreiben. Sie ermöglicht es Ihnen, Ihren Funktionen den gleichen Namen zu geben, aber unterschiedliche Operationen auszuführen, wenn die Parameter oder Rückgabetypen unterschiedlich sind. Wenn Sie jedoch versuchen, eine überladene Funktion zu kompilieren, kann der folgende Fehler auftreten:
„Eine überladene Funktion wird nur dann als Überladung betrachtet, wenn die Parameter unterschiedlich sind.“
Diese Art von Fehler tritt normalerweise zwischen dem Funktionsnamen und den When-Funktionen auf mit den gleichen Parametern, aber unterschiedlichen Typen sind definiert. Dies bedeutet, dass der Compiler nicht zwischen den beiden Funktionen unterscheiden kann, da ihre Namen und Parameter identisch sind. Daher werden sie zur Kompilierungszeit als dieselbe Funktion behandelt und der Compiler generiert daher einen Fehler.
Zum Beispiel könnten Sie den folgenden Code schreiben:
#include <iostream> void doSomething(int num) { std::cout << num << std::endl; } void doSomething(double num) { std::cout << num << std::endl; } int main() { doSomething(5); doSomething(3.14); return 0; }
Dieses Programm definiert zwei überladene Funktionen mit dem Namen „doSomething“, eine mit einem Ganzzahlparameter und eine mit einem Gleitkommaparameter mit doppelter Genauigkeit. In der Hauptfunktion rufen wir diese beiden Funktionen mehrmals mit unterschiedlichen Werten auf. Wenn Sie jedoch versuchen, dieses Programm zu kompilieren, erhalten Sie die oben genannte Fehlermeldung.
Um dieses Problem zu lösen, müssen Sie die Parameter dieser beiden Funktionen unterschiedlich machen – Sie müssen sie wirklich überladen machen. Der einfachste Weg besteht darin, die Art oder Anzahl der Parameter zu ändern. Sie können den obigen Code beispielsweise wie folgt umschreiben:
#include <iostream> void doSomething(int num) { std::cout << num << std::endl; } void doSomething(double num1, double num2) { std::cout << num1 + num2 << std::endl; } int main() { doSomething(5); doSomething(3.14, 2.72); return 0; }
In diesem umgeschriebenen Code ändern wir den Parameter der zweiten Funktion von einer Gleitkommazahl mit doppelter Genauigkeit in zwei Gleitkommazahlen mit doppelter Genauigkeit, sodass die beiden Funktionen dort gewonnen haben Es darf keine Überschneidungen geben. In der Hauptfunktion rufen wir sie erneut mit anderen Parametern auf, diesmal treten jedoch keine Kompilierungsfehler auf.
Eine andere Möglichkeit, Funktionsparameter zu ändern, ist die Verwendung von Referenz- oder Zeigertypen. Du könntest zum Beispiel schreiben:
#include <iostream> void doSomething(int& num) { std::cout << num << std::endl; } void doSomething(double& num) { std::cout << num << std::endl; } int main() { int x = 5; double y = 3.14; doSomething(x); doSomething(y); return 0; }
In diesem neuen Programm ändern wir den Parametertyp der ersten Funktion von int in int&, was bedeutet, dass diese Funktion nun eine Ganzzahlreferenz anstelle einer Ganzzahl erhält. Ebenso haben wir den Parametertyp der zweiten Funktion von double in double& geändert, was bedeutet, dass diese Funktion nun einen Verweis auf eine Gleitkommazahl mit doppelter Genauigkeit anstelle einer Gleitkommazahl mit doppelter Genauigkeit erhält. Auf diese Weise werden diese beiden Funktionen zu echten überladenen Funktionen, und wir können sie in der Hauptfunktion mit unterschiedlichen Werten aufrufen.
Kurz gesagt ist das Überladen von Funktionen eine sehr nützliche Funktion, wenn Sie C++-Code schreiben. Wenn Sie jedoch auf die Fehlermeldung des Compilers stoßen, dass „eine überladene Funktion nur dann als Überladung betrachtet wird, wenn die Parameter unterschiedlich sind“, müssen Sie die Funktionsparameter unterschiedlich machen, damit der Compiler sie unterscheiden kann. Sie können ihren Typ, ihre Nummer, ihre Referenz oder ihren Zeigertyp ändern, um sie zu echten überladenen Funktionen zu machen.
Das obige ist der detaillierte Inhalt vonC++-Kompilierungsfehler: Überladene Funktionen gelten nur dann als überladen, wenn ihre Parameter unterschiedlich sind.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!