Im Bereich C sind Vektoren ein leistungsstarkes Werkzeug für die dynamische Speicherverwaltung. Wenn es jedoch darum geht, Referenzen in Vektoren zu speichern, kann ein rätselhafter Fehler auftreten.
Beachten Sie den folgenden Codeausschnitt:
std::vector<int> hello;
Dieser Code lässt sich nahtlos kompilieren, sodass Sie einen Vektor von erstellen können ganze Zahlen. Aber was passiert, wenn wir stattdessen versuchen, Referenzen zu verwenden?
std::vector<int &> hello;
Der Compiler bricht einen Fehler aus und ruft aus: „Zeiger auf Referenz ist illegal.“ Dieses merkwürdige Verhalten ist auf die grundlegende Natur von Referenzen in C zurückzuführen. Einmal initialisierte Referenzen bleiben unveränderlich und sind während ihrer gesamten Lebensdauer an ihren jeweiligen Referenten gebunden. Das Zuweisen eines neuen Werts zu einer Referenz ist strengstens verboten.
Leider steht diese Unveränderlichkeit im Widerspruch zur Natur von Containern wie Vektoren. Container erfordern, dass ihre Komponenten zuweisbar sind, um eine ordnungsgemäße Speicherverwaltung und Änderungsmöglichkeiten sicherzustellen. Da Referenzen diese Zuweisbarkeit fehlt, sind sie als Vektorkomponenten nicht kompatibel.
Daher ist die einzig praktikable Option zum Speichern von Referenzen in Vektoren die Verwendung von Zeigern, die die erforderliche Flexibilität bieten, um im Laufe der Zeit auf verschiedene Objekte zu zeigen.
Das obige ist der detaillierte Inhalt vonWarum kann ich in einem C-Vektor keine Referenzen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!