Heim >Backend-Entwicklung >C++ >Erlaubt das Überladen von C-Funktionen Unterschiede nur im Rückgabetyp?
Ist der Rückgabetyp in der Funktionssignatur enthalten und erlaubt er ein Überladen nur mit Änderungen des Rückgabetyps?
In C gibt es einen Unterschied zwischen Funktionsdeklarationen und Funktionsentitäten. Deklarationen können Funktionsentitäten oder Vorlagenentitäten erstellen. Bei Funktionsdeklarationen, die keine Vorlagen sind, umfasst die Signatur die Argumenttypen, Informationen zur Klassenmitgliedschaft (falls zutreffend) und Qualifizierer. Bei Funktionsvorlagenspezialisierungen umfasst die Signatur jedoch auch den Rückgabetyp.
Funktionssignatur für Funktionsspezialisierungen
Standard C schreibt vor, dass die Signatur bei Funktionsvorlagenspezialisierungen Folgendes umfasst der Rückgabetyp, wie in Abschnitt 14.5.5.1 hervorgehoben. Dies umfasst die Signatur der Vorlage und die bereitgestellten Vorlagenargumente. Dies steht im Einklang mit dem Verständnis, dass der Rückgabetyp zum Typ einer Funktion beiträgt.
Überladung mit differenzierten Rückgabetypen
Gemäß dem Standard sind Funktionsdeklarationen mit Unterschiedliche Rückgabetypen gelten im Hinblick auf die Überladung als unterschiedlich (Abschnitt 13.1). Die Definition von „unterscheidet sich nur durch den Rückgabetyp“ bleibt jedoch in der Sprache nicht spezifiziert.
Compilerverhalten
Derzeit lehnen große Compiler Funktionsdeklarationen mit identischen, aber unterschiedlichen Signaturen ab Rückgabetypen (z. B. „int f();“, „double f();“). Dieses Verhalten ist jedoch möglicherweise nicht unbedingt vom Standard vorgeschrieben.
C 0x Draft Proposal
Neueste C 0x Draft-Spezifikationen bieten eine umfassendere Definition von „Signatur“ in Abschnitt 1.3.11, der explizit den Rückgabetyp sowohl für Funktionsentitäten als auch für Vorlagenspezialisierungen einschließt. Dies deckt sich mit der Behauptung, dass der Rückgabetyp einen integralen Bestandteil des Funktionstyps bildet.
Daher gilt zusammenfassend:
Das obige ist der detaillierte Inhalt vonErlaubt das Überladen von C-Funktionen Unterschiede nur im Rückgabetyp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!