Weil so die Sprache entworfen wurde.
Eine interessantere Frage wäre: Was sind die Alternativen?
Angenommen, Sie haben void f(A a = MyA, B b);
f(_, abee)
oder f(, abee)
f(b = abee)
Aber das sind Feinheiten und sicherlich nicht notwendig, denn im Gegensatz zu Python unterstützt C ++ das Überladen von Funktionen:
void f(A a, B b);
void f(B b) { f(MyA, b); }
und daher sind die Standardargumente unnötig ... vor allem wenn man bedenkt, dass Probleme mit OO-Code auftreten, da Standardargumente statisch aufgelöst sind (Kompilierzeit)
%Vor%BEARBEITEN: auf benannte Parameter - & gt;
Die Funktion kann mit Funktionsobjekten emuliert werden.
%Vor%Falls Sie die Argumente nicht kopieren wollen, haben Sie die Möglichkeit Referenzen / Zeiger zu verwenden, obwohl es kompliziert werden kann.
Es ist ein praktisches Idiom, wenn Sie viele Standardwerte haben, die keine echte Priorität haben.
Nur um @ tenfours Antwort zu ergänzen. C ++ - FAQ Lite hat ein Thema, das benannte Parameter beschreibt und ich denke, das Thema spricht Sie an Problem in gewissem Maße.
Weil Sie in einem Funktionsaufruf in jedem Fall die Nicht-Standard-Argumente aufrufen müssen. Wenn Sie Ihr Standardargument an den Anfang der Argumentliste setzen, wie sollen Sie sagen, dass Sie das Standardargument oder die anderen Argumente setzen?
Tags und Links c++