Rückgabetyp und Funktionssignatur in C
In C wird der Rückgabetyp einer Funktion bei gewöhnlichen Funktionen nicht als Teil ihrer Signatur betrachtet , also Funktionen, die keine Spezialisierungen von Funktionsvorlagen sind. Dies bedeutet, dass Funktionen mit demselben Namen und denselben Parametertypen überladen werden können, auch wenn sie unterschiedliche Rückgabetypen haben.
Signatur von Funktionsvorlagenspezialisierungen
Allerdings für Funktion Bei Vorlagenspezialisierungen ist der Rückgabetyp in der Signatur enthalten. Dies liegt daran, dass die Signatur einer Funktionsvorlagenspezialisierung die Signatur der Vorlage selbst sowie deren Rückgabetyp und Vorlagenparameterliste umfasst.
Warum ist sie nicht Teil der Funktionssignatur?
Der Grund, warum der Rückgabetyp nicht als Teil der Funktionssignatur für gewöhnliche Funktionen betrachtet wird, wird im C-Standard nicht explizit angegeben. Es kann jedoch gefolgert werden, dass dies auf die Tatsache zurückzuführen ist, dass die Funktionsüberladung hauptsächlich auf der Kennung und den Parametertypen der Funktion basiert.
Wenn die Überladung ungültig ist
Trotzdem Da der Rückgabetyp nicht Teil der Signatur ist, verbietet der Standard das Überladen einer Funktion mit einem anderen Rückgabetyp. Dies bedeutet, dass der folgende Code in aktuellen Hauptcompilern zu einem Kompilierungsfehler führt:
int f(); double f(); // invalid
Fazit
In C ist der Rückgabetyp nicht Teil von Signatur gewöhnlicher Funktionen, ist jedoch in der Signatur von Funktionsvorlagenspezialisierungen enthalten. Diese Unterscheidung ist wichtig zu verstehen, wenn Sie Funktionen überladen und mit Funktionsvorlagen arbeiten.
Das obige ist der detaillierte Inhalt vonIst der Rückgabetyp Teil einer C-Funktionssignatur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!