Heim >Backend-Entwicklung >C++ >Können C-Funktionen Standardwerte für nicht konstante Referenzparameter haben?

Können C-Funktionen Standardwerte für nicht konstante Referenzparameter haben?

Susan Sarandon
Susan SarandonOriginal
2024-11-29 17:54:11684Durchsuche

Can C   Functions Have Default Values for Non-Const Reference Parameters?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn