Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat von »"Nexus"«
Kein Problem.
Aber ich finde es wichtig, klarzustellen, dass void main() einfach nur falsch ist. Die vielen schlechten C++-Bücher, die es leider auf dem Markt gibt, ändern auch nichts an dieser Tatsache, tragen aber massiv zur Verbreitung von solchem Irrglauben bei.
Stimmt, die hab ich vergessen. Neben den Büchern sind auch lernresistente Professoren für solchen Irrglauben verantwortlich.Zitat von »"David_pb"«
Find ich auch wichtig und hab das gleich mal meinem Prof gedrückt... Sein Kommentar: Mir doch egal! :-]
Zitat von »"Nexus"«
Der Rückgabewert ist auf int festgelegt, Punkt. Was implementation-defined sein kann, ist "otherwise its type", also der Rest des Funktionstyps. Konkret sind damit die Parameter gemeint.
Der Compiler darf also wie du sagst weitere Signaturen mit dem Namen "main" unterstützen. Doch der Rückgabetyp gehört nicht zur Signatur.
Das fände ich aber recht weit hergeholt. Was würde dann der Satz "It shall have a return type of type int" bringen, wenn alles implementation-defined wäre? Ausserdem brauchst du jetzt nicht den void main()-Verfechtern Mut zu machen. Ich hoffte, wir könnten das mal klarstellen... :pZitat von »"drakon"«
Hatten wir nicht mal auf c-plusplus.de die gleiche Diskussion, wo es dann auf die auslegung des "but" hinauslief? Afaik liesse sich der Satz (rein sprachlich) auch auf die Art von david auslegen.
Nein, Signatur besteht nur aus Name, Parametertypen (ohne Toplevel-CV-Qualifizierungen) und const/volatile bei Memberfunktionen. Wie ich gerade noch gesehen habe, zudem aus Klassenzugehörigkeit bei Membern und Templateargumenttypen bei Spezialisierungen von Funktionstemplates. Diese zwei Dinge sind eigentlich klar, aber da denkt man nicht gerade dran.Zitat von »"drakon"«
Was meinst du, dass der Rückgabety nicht zur Signatur gehört? - Die gehört sehr wohl dazu. In diesem Falle natürlich ausgeschlossen, aber grundlegend gehört der dazu..
Zitat
1.3.10 signature [defns.signature]
the information about a function that participates in overload resolution (13.3): the types of its parameters
and, if the function is a class member, the cv- qualifiers (if any) on the function itself and the class in which
the member function is declared.2) The signature of a function template specialization includes the types of
its template arguments (14.5.5.1).
Hehe, kein Problem. Manchmal habe ich auch Mühe mit solchen Spitzfindigkeiten... Aber ich glaube, Eiffel tut dir nicht gut. :lol:Zitat von »"drakon"«
Hmm. Mist. Da hätte ich nochmal im Standard reinschauen müssen. Hatte das im Kopf, aber das war anscheinend in Eiffel so definiert.. -.-
Zitat von »"Nexus"«
Aber ich glaube, Eiffel tut dir nicht gut. :lol:
Ich würde die Signatur nicht unbedingt als wichtigen Teil der Funktion ansehen, das ist wahrscheinlich der falsche Ansatz. "Signatur" ist für mich einfach ein Begriff, mit dem man im Standard effektiv arbeitet. Sonst - gerade bei Überladung - wäre die ganze Zeit von "Signatur ohne Rückgabetyp" oder so die Rede, was ja auch nicht das Wahre sein kann.Zitat von »"drakon"«
Je länger ich mir das so überlege, desto eher finde ich, dass der Rückgabetyp ebenfalls zur Signatur gehören sollte. Empfinde ich als inkonsistenz, dass sie das nicht tut.. Für den Aufrufer ist der Typ des Rückgabewertes ja genau so wichtig, wie Parameter.
Wie willst du das denn realisieren?Zitat von »"drakon"«
Mehr noch wäre eine Überladung anhand des Rückgabetypes recht nett und eigentlich auch irgendwie eine logische Folgerung.
Werbeanzeige