Die Postfix-Operatoren nehmen einen int
Parameter. Es gibt bereits eine question as to why, und es scheint, als wäre die Antwort: "Because Bjarne Stroustrup said so"Sollten die Postfix-Operatoren nicht als binäre Operatoren betrachtet werden
Ich bin unwohl mit dieser Antwort. Wenn Bjarne Stroustrup etwas brauchte, um den Compiler anders zu kippen, wieso konnte er dann nicht einfach abtasten, ob der Operator eine Referenz zurückgegeben hat? Es lässt mich in Frage:
- Warum kann ich nicht tun:
foo++ 13;
- Warum ist nicht der
int
Parameter auf 1 vorbelegt - Warum dies überhaupt ein unärer Operator betrachtet wird, dauert es ein Argument
Kurze Version: Es ist ein Hack. –
Sie spielen beide Seiten der Medaille: 1) "Weil Sie eine Funktion nicht überladen können, basierend auf ihrem 'Rückgabetyp" Sie sagen, dass die Methode den traditionellen Regeln folgen muss 2) "Weil der (' int') Parameter ist genau dort für die Überladungsauflösung. Sie nehmen es nicht auf oder verwenden den Parameter. " Sie sagen, dass die Methode nicht den traditionellen Regeln folgen muss. Ich sage, wenn es zumindest die Regeln brechen sollte, sollte es zumindest Sinn ergeben. –
@ JonathanMee Es gibt keinen Weg in der Sprache, dem Compiler zu sagen, ob 'operator ++' der Präfix- oder Postfixoperator sein soll. Sie beschließen, es zu hacken, indem sie Überladungsauflösung verwenden.Anstatt eine spezielle Regel für die Behandlung des Rückgabewerts zu definieren, entscheiden sie, dass der Parameter der Marker für den Compiler wäre. Es ist ungefähr so natürlich, wie Sie mit C++ arbeiten können. Tatsächlich verwenden wir verworfene Parameter an anderen Stellen, um Überladungen für den Compiler zu disambiguieren. – NathanOliver