warum sind die Standardargumente nachstehende Argumente?

8

Warum sind Standardargumente in C ++ nachhängende?

    
Ashish 17.08.2010, 11:32
quelle

4 Antworten

14

Wenn Sie void func(int a = 0, int b); hatten, wie würden Sie angeben, den Standardparameter beim Aufrufen dieser Funktion zu verwenden?

    
tenfour 17.08.2010, 11:34
quelle
5

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);

  • Platzhalter / leeres Argument: f(_, abee) oder f(, abee)
  • Benannte Argumente (wie in Python): 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.

    
Matthieu M. 17.08.2010 12:27
quelle
1

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.

    
Sergei Kurenkov 17.08.2010 11:57
quelle
-1

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?

    
Federico klez Culloca 17.08.2010 11:35
quelle

Tags und Links