C++: Ein Keyword für drei Konstrukte

„Operator const_cast<>“ entfernt die Const-Qualität eines Objekts. Wie wir in Kürze sehen werden, gibt es jedoch einige Einschränkungen für die Verwendung dieses Operators.

Die Entfernung des Const-Qualifiers
Obgleich const_cast<> den Cons-Qualifier eines Objekts entfernen kann, heißt dies nicht, dass man deshalb das daraus resultierende Objekt modifizieren könne. Sehen Sie sich das folgende Beispiel an:


Der Versuch, den String s zu überschreiben, wird zu einem undefinierten Verhalten führen. Das Problem liegt darin, dass Const-Objekte im Arbeitsspeicher des Systems gespeichert werden können. Eine Brute Force-Entfernung von const ermöglicht es, das Objekt so zu behandeln, als wäre es nicht const (z.B. seine Übergabe an eine Funktion, die char * annimmt), erlaubt aber nicht seine Modifizierung.

Die Umwandlung von non-const in const
Die meisten Programmierer sind sich nicht bewusst, dass const_cast<> auch die umgekehrte Operation durchführen kann, nämlich die Konvertierung eines Non-Const-Objekts in ein Const-Objekt. Zum Beispiel:


Allerdings wird man eine solche Verwendung von const_cast<>h nur selten antreffen. Der Grund dafür ist, dass C++ in einem Kontext, der const erfordert, automatisch Umwandlungen von non-const in const durchführt. Daher braucht man const_cast<> niemals wirklich für diesen Zweck einzusetzen – es sei denn, man möchte seinen Code dokumentieren.

Schlussfolgerung

Die syntaktische Barriere führt häufig dazu, dass Programmierer die Verwendung von const aufgeben und damit die Qualität ihrer Programme beeinträchtigen, also schlechter lesbaren und schwerer zu wartenden Code produzieren. Zugegeben, der Unterschied zwischen Pointers auf Const-Objekte und Const-Pointers ist nicht so klar erkennbar, wie er sein könnte. Das gilt vor allem, wenn man mit komplexen Deklarationen zu tun hat. Eine Überprüfung der Position des Const-Qualifiers bezüglich des Sternchens sollte jedoch für Klarheit sorgen, und Const-Elementfunktionen sind durch ein „const“ nach der Parameterliste leicht erkennbar.

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 *