Erstens, Verwenden Sie nicht using namespace std;
. In diesem Fall gibt es eine Struktur namens std::plus
- oh, warte, niemals Denken Sie daran, das heißt eigentlich plus
und sein Konstruktor wird in den Bucket zur Überladungsauflösung mit Ihrer Funktion namens plus
geworfen.
Zweitens haben Sie eine Mehrdeutigkeit, weil 3.2
und 4.2
vom Typ double
sind und genauso gut in float
oder int
konvertiert werden können.
Dies ist eine Vereinfachung, aber wenn es darum geht, Zahlen an eine überladene Funktion zu übergeben, verwendet C ++ grundsätzlich diese Regeln:
Wenn Sie mehrere Kandidaten auf einer bestimmten Ebene haben, ist das eine Mehrdeutigkeit. Entscheidend ist, dass ein double
nicht zu einem float
hochlädt - das wäre ein Downgrade. Daher muss eine Standardkonvertierung in float
verwendet werden, die mit der Standardkonvertierung in int
verknüpft ist, sodass diese beiden Überladungen nicht eindeutig sind.
Rufen Sie die Float-Überladung wie folgt auf:
%Vor%Eine Konstante wie 3.2 hat tatsächlich den Typ double .
Tags und Links c++ function method-overloading