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

Warum können C-Funktionen keine Standardwerte für nicht konstante Referenzparameter haben?

Susan Sarandon
Freigeben: 2024-11-28 12:16:15
Original
438 Leute haben es durchsucht

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

Ü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);
Nach dem Login kopieren

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
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage