Verwendung des const-Schlüsselworts mit Zeigern in C++
-
Verwendung des Schlüsselworts
const
zur Kennzeichnung unveränderlicher Objekte in C++ -
Verwenden des Schlüsselworts
const
mit Zeigertypen in C++
Dieser Artikel zeigt Ihnen Methoden, wie Sie das Schlüsselwort const
mit Zeigern in C++ verwenden.
Verwendung des Schlüsselworts const
zur Kennzeichnung unveränderlicher Objekte in C++
Im Allgemeinen wird das Schlüsselwort const
verwendet, um anzugeben, dass das angegebene Objekt während der gesamten Programmausführung unveränderlich sein soll. Die Praxis, die konstanten Werte zu benennen, trägt dazu bei, dass die Codebasis im Vergleich zur direkten Angabe von Literalwerten besser anpassbar und einfacher zu warten ist. Darüber hinaus wird das Schlüsselwort const
von den Funktionsschnittstellen stark verwendet, um anzuzeigen, dass die angegebenen Parameter schreibgeschützt sind und die Laufzeitfehler auf die Kompilierzeitfehler reduzieren.
Wir deklarieren ein const
-Objekt, indem wir das Schlüsselwort vor dem Typspezifizierer einfügen, wie im folgenden Codeausschnitt gezeigt. Hier sehen Sie, dass die Variable s1
als schreibgeschützter string
angelegt wird und den const
-Objekten kein anderer Wert zugewiesen werden kann. Sie müssen daher bei der Deklaration initialisiert werden. Wenn wir versuchen, das const
-Objekt zu ändern, wird der Compiler-Fehler geworfen.
#include <iostream>
using std::cout;
using std::endl;
using std::string;
int main() {
const string s1("Hello");
string s2("Hello");
// s1 += "Joe"; // Error
s2 += "Joe";
cout << "s1: " << s1 << endl;
cout << "s2: " << s2 << endl;
return EXIT_SUCCESS;
}
Ausgabe:
s1: Hello
s2: HelloJoe
Verwenden des Schlüsselworts const
mit Zeigertypen in C++
Beachten Sie, dass wir bei der Deklaration eines Pointer-Objekts normalerweise auch den Typ des Pointer-Objekts angeben. Daher wird es schwierig, nur ein Schlüsselwort const
als Präfix der Deklarationsanweisung anzugeben. Folglich brauchen wir separate const
-Bezeichner für den Zeiger und das gezeigte Objekt selbst.
Im Allgemeinen haben wir drei Kombinationen dieser Bezeichner: die erste, bei der sowohl der Zeiger als auch das Objekt nicht veränderbar sind; die zweite Kombination, bei der der Zeiger nicht neu zugewiesen werden kann, das Objekt selbst jedoch veränderbar ist; Schließlich haben wir die Variante, bei der der Zeiger veränderbar ist und das Objekt nicht.
Alle drei Varianten werden im nächsten Code-Snippet deklariert, um die entsprechende Syntax-Notation zu demonstrieren. Manchmal wird empfohlen, diese Deklarationen von ganz rechts nach links zu lesen, aber Sie können sich auch daran erinnern, dass der Deklarator *const
verwendet wird, um die unveränderlichen Zeiger anzugeben.
#include <iostream>
using std::cout;
using std::endl;
using std::string;
int main() {
string s2("Hello");
const string *const s3 = &s2; // both are non-mutable
s3 = &s2; // Error
*s3 = s2; // Error
const string *s4 = &s2; // only string object is non-mutable
s4 = s3;
*s4 = s2; // Error
string *const s5 = &s2; // only pointer is non-mutable
s5 = s3; // Error
*s5 = s2;
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook