Archiv verlassen und diese Seite im Standarddesign anzeigen : [const] Warum hilft mir das?
Kann mir jemand bitte den Unterschied zwischen
void addItem(const Glib::ustring &item) const;
und
void addItem(const Glib::ustring &item);
erklaeren. Ich befass mich gerade wieder ein wenig mit C++ und habe gerade einen Streit mit meinem Compiler hinter mich gebracht. Die Loesung war dass const hinten, aber was macht das genau?
mfg
nul
locus vivendi
08-11-2006, 15:23
Es handelt sich um eine Memberfunktion, das haettest du dazuschreiben sollen. Memberfunktionen haben einen impliziten Parameter der das Objekt angibt, fuer das sie gerufen wurden. Dieser Parameter wird "this" genannt und ist eine Referenz. Wenn du nun "const" hinter die Funktion schreibst, dann ist der Typ "Referenz auf const". Andernfalls ist er "Referenz auf nicht-const".
Das hat z. B. die Auswirkung das "const"-Memberfunktionen fuer konstante Objekte gerufen werden koennen. Ohne const ginge es nicht so ohne weiteres, weil ja die Konvertierung von "Referenz auf const" nach "Refernez auf nicht-const" nicht automatisch vorgenommen wird.
Anders formuliert (und hoffentlich richtig):
Wenn ein const hinter einer Methode steht, dann kann diese Methode das "this"-Objekt nicht verändern (also Attribute ändern), weil this für die Methode ein const-Objekt ist.
Ok,
sowas in die Richtung hab ich mir auch schon gedacht.
thx @all
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.