C++ Tutorial

Schnelle objektorientierte, kompilierende Programmiersprache.
nufan
Wiki-Moderator
Beiträge: 2520
Registriert: Sa Jul 05, 2008 3:21 pm

Re: C++ Tutorial - Const Klasse

Beitrag von nufan » Di Jun 08, 2021 7:02 am

Hallo :)
Xeon hat geschrieben:
Mo Jun 07, 2021 2:28 pm
Konstant, aber doch veränderlich
Nicht alle Datensätze müssen in einem konstanten Objekt unveränderlich sein. Eine Liste kann zum Beispiel konstant sein, wenn kein Element hinzugefügt oder gelöscht wird. Der Zeiger auf ein aktuelles Element darf sich unter Umständen aber doch verändern. So kann man die Variablen, die den Wert der Instanz nicht verändern als mutable kennzeichnen. Diese Mutable-Variablen dürfen dann auch von Funktionen geändert werden, die als const gekennzeichnet sind:
Kann das sein dass dieses Wort "nicht" welches ich unterstrichen habe nicht dazu gehört?
Die Formulierung ist nicht ideal, doch die Aussage im Wiki ist korrekt. Der Begriff "Wert" könnte in diesem Fall etwas zu allgemein sein.

Das im Wiki genannte Beispiel finde ich ziemlich gut:
Wiki hat geschrieben:Eine Liste kann zum Beispiel konstant sein, wenn kein Element hinzugefügt oder gelöscht wird. Der Zeiger auf ein aktuelles Element darf sich unter Umständen aber doch verändern.
Der von außen sichtbare Zustand der konstanten Liste (das heißt die in der Liste gespeicherten Werte) darf nicht verändert werden. Was nun intern passiert (z.B. wenn man über die Liste iteriert, ohne sie zu verändern), sollte den Nutzer dieser Klasse nicht interessieren müssen. Der eigentliche "Wert" der Liste ändert sich für den Nutzer dadurch ja nicht.

Versuchen wir mal den Satz anders zu formulieren:
So kann man die Variablen, die den von außen sichtbaren Zustand der Instanz nicht verändern, als mutable kennzeichnen.
Findest du das besser?

Xeon
Beiträge: 120
Registriert: So Dez 17, 2017 4:10 pm

Re: C++ Tutorial - Const Klasse

Beitrag von Xeon » Di Jun 08, 2021 12:44 pm

nufan hat geschrieben:
Di Jun 08, 2021 7:02 am

Versuchen wir mal den Satz anders zu formulieren:
So kann man die Variablen, die den von außen sichtbaren Zustand der Instanz nicht verändern, als mutable kennzeichnen.
Findest du das besser?
Habe ich das richtig verstanden, die Variablen die z.B. außerhalb der Klasse liegen und sie nicht verändern als mutable bezeichnet werden?

nufan
Wiki-Moderator
Beiträge: 2520
Registriert: Sa Jul 05, 2008 3:21 pm

Re: C++ Tutorial - Const Klasse

Beitrag von nufan » Di Jun 08, 2021 12:58 pm

Xeon hat geschrieben:
Di Jun 08, 2021 12:44 pm
Habe ich das richtig verstanden, die Variablen die z.B. außerhalb der Klasse liegen und sie nicht verändern als mutable bezeichnet werden?
Sie liegen schon innerhalb der Klasse. Aber nicht alles das Teil einer Klasse ist, interessiert den Nutzer davon. Ich denke du wirst auch schon über das "private" Schlüsselwort gestolpert sein. Dieses hilft dabei, Teile von Klassen vor Zugriffen zu schützen. Komplexe Details zu verstecken, um eine möglichst einfache Schnittstelle zu bieten, ist ein wichtiges Konzept der Programmierung.

Xeon
Beiträge: 120
Registriert: So Dez 17, 2017 4:10 pm

Re: C++ Tutorial

Beitrag von Xeon » Di Jun 08, 2021 1:37 pm

Ja das Thema Schlüsselwort private war schon dran.

Jetzt verstehe ich diesen Code:

Code: Alles auswählen

class List
{
  private:
    Node * First;
    Node * Last;
    mutable Node * Current;
  public:
    inline void SetCurrent( Node & current ) const { Current = &current; }
};
Ich finde das Schlüsselwort sollte eher "immutable" statt "mutable" heißen, aber das haben die wahrscheinlich so gemacht wegen der const Funktion.

Antworten