Sie sind wahrscheinlich vertraut mit dem Konzept der Konstanten und dem Keyword const, das Variablen als Konstanten deklariert. Aber const kann mehr als nur Konstanten deklarieren. Es kann auch Const-Pointers und Const-Member-Functions (Elementfunktionen) deklarieren.
Const-Deklarationen
Da Const-Deklarationen nur ein einziges Keyword verwenden, das sich auf drei verschiedene Konstrukte bezieht, können sie recht verwirrend sein. Schauen wir uns diese Konstrukte im Einzelnen an.
Const-Objekte
Deklariert man ein Objekt als const (der Begriff Objekt wird hier im weiteren Sinne verwendet: ein Objekt ist ein Speicherbereich, in dem eine Variable oder ein Klassenobjekt gespeichert ist), stellt man damit sicher, dass das Programm dieses Objekt nicht modifiziert. Eine Const-Definition muss einen passenden Initialisierer beinhalten. Listing A enthält verschiedene Instanzen von Const-Objekten.
Const-Pointers
Die Deklaration eines Pointers als const stellt sicher, dass der Programmierer diesem Pointer im Nachhinein keine neue Adresse zuweisen kann. Wie in Listing B gezeigt, ist das an diesen Pointer gebundene Objekt auch weiterhin modifizierbar.
Const-Member-Functions
Der Zustand eines Klassenobjekts besteht aus den Werten seiner nicht statischen Datenelemente. Eine Elementfunktion (Member Function), die den Zustand ihres Objekts nicht verändert, sollte als const deklariert werden. Dies wird gemacht, indem man nach der Parameterliste const anfügt. Zum Beispiel:
Man muss erkennen, dass Const-Elementfunktionen ein bedeutender Bestandteil der Sprache ‚Design by Contract‘ sind: Sie gewährleisten, dass das, was der Programmierer vorhat (z.B. den Zustand des Objekts unverändert zu erhalten), vom Compiler durchgesetzt wird. Der Versuch, ein Datenelement von innerhalb eines Const-Elements zu modifizieren, ruft einen Kompilierungsfehler hervor:
Zusätzlich dokumentiert die Konstante das Verhalten der Funktion.
Neueste Kommentare
Noch keine Kommentare zu C++: Ein Keyword für drei Konstrukte
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.