Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [const] Warum hilft mir das?

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377

    [const] Warum hilft mir das?

    Kann mir jemand bitte den Unterschied zwischen
    Code:
    void addItem(const Glib::ustring &item) const;
    und
    Code:
    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
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    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.

  3. #3
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    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.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Ok,
    sowas in die Richtung hab ich mir auch schon gedacht.

    thx @all
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •