Verwendung des const-Schlüsselworts mit Zeigern in C++

Jinku Hu 12 Oktober 2023
  1. Verwendung des Schlüsselworts const zur Kennzeichnung unveränderlicher Objekte in C++
  2. Verwenden des Schlüsselworts const mit Zeigertypen in C++
Verwendung des const-Schlüsselworts mit Zeigern 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;
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Verwandter Artikel - C++ Const