Übergabe von Parametern per Referenz mit Standardwerten in C
In C ist es bei der Übergabe von Parametern per Referenz nicht möglich, einen Standardwert zuzuweisen Wert für den Parameter. Dies führt zu einem Fehler, wenn versucht wird, Funktionen mit Standardwerten für Referenzparameter zu deklarieren. Beispielsweise führt der folgende Code zu einem Fehler:
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
Fehler aufgetreten:
error C2440: 'default argument' : cannot convert from 'const int' to 'unsigned long &' A reference that is not to 'const' cannot be bound to a non-lvalue
Auflösung
Standardwerte können nur Konstanten Referenzen zugewiesen werden, nicht Nicht-Konstanten Referenzen. Dies liegt an der Einschränkung von C, dass ein temporärer Wert (z. B. der Standardwert) nicht an eine nicht konstante Referenz gebunden werden kann.
Um dieses Problem zu umgehen, können Sie eine tatsächliche Instanz als Standardwert verwenden:
static int AVAL = 1; void f( int &x = AVAL ) { // stuff } int main() { f(); // equivalent to f(AVAL); }
Dieser Ansatz ist jedoch nur begrenzt in der Praxis anwendbar.
Das obige ist der detaillierte Inhalt vonWarum können C-Funktionen keine Standardwerte für nicht konstante Referenzparameter haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!