PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [const] Warum hilft mir das?



nul
08-11-2006, 11:42
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.

Boron
08-11-2006, 16:55
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.

nul
08-11-2006, 18:19
Ok,
sowas in die Richtung hab ich mir auch schon gedacht.

thx @all