Heim >Backend-Entwicklung >C++ >Können C-Funktionen Standardwerte für nicht konstante Referenzparameter haben?
Standardwert für referenzierten Parameter in C
Können Sie bei der Übergabe eines Parameters per Referenz in C einen Standardwert dafür angeben?
Betrachten Sie die folgende Funktionsdeklaration:
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
Der Versuch, diesen Code zu kompilieren, führt zu einem Fehler:
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
Die Antwort
Standardwerte können nur konstanten Referenzen zugewiesen werden, nicht nicht konstanten Referenzen. Dies liegt daran, dass C das Binden einer temporären Referenz (in diesem Fall des Standardwerts) an eine nicht konstante Referenz verbietet.
Um diese Einschränkung 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); }
Diese Methode ist jedoch nur begrenzt in der Praxis anwendbar.
Das obige ist der detaillierte Inhalt vonKönnen C-Funktionen Standardwerte für nicht konstante Referenzparameter haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!