C++: Ein Keyword für drei Konstrukte

In diesem Artikel wird dargestellt, wie man zwischen Konstrukten unterscheiden kann, ihre Verwendungsmöglichkeiten aufzeigt und die Semantik von Const-Objekten erörtert.

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.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu C++: Ein Keyword für drei Konstrukte

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *