Was bedeutet das Schlüsselwort const in einem C ++ - Funktionsprototyp? [Duplikat]

7

Ich habe in meinen späten Lesungen auf C ++ (speziell bei Boost) eine Menge Funktionen gesehen, die eine Schreibweise haben, die ich noch nie zuvor gesehen habe. Zum Beispiel:

%Vor%

Sie können sehen, dass wir eine const nach dem Namen der Funktion haben! Ich habe das const-Schlüsselwort hauptsächlich auf den Funktionen gesehen Rückgabewerte (oder als Parameter) bezüglich ihrer Verwendung in Funktionen, aber dieses ist anders. Kann mir bitte jemand erklären, was es ist und warum wir es verwenden und wie unterschiedlich es von der konventionellen Verwendung von const on-Funktionen ist?

%Vor%     
Breeze 23.08.2012, 18:47
quelle

3 Antworten

15

Wenn Sie ein const-Objekt haben, können nur Member-Funktionen mit der Bezeichnung const aufgerufen werden. Zum Beispiel

%Vor%

Außerdem kann eine konstante Elementfunktion keine Elementvariablen des Objekts ändern (es sei denn, die Elementvariablen werden als änderbar deklariert.) z. B.

%Vor%     
bstamour 23.08.2012, 18:50
quelle
5

Es ist ein Versprechen (ein erzwungenes), die Funktion ändert keine der Mitglieder der Klasse. Ohne es könnten Sie es nur für nicht const -Objekte aufrufen.

    
cnicutar 23.08.2012 18:49
quelle
3

Es verbietet der Methode, Klassenmitgliedsvariablen zu ändern.

Eine gute Regel ist, eine Methode als const zu deklarieren, wenn sie const (es. getters) sein soll, aus mindestens zwei Gründen:

  • Dokumentation Zwecke: Es zeigt sofort, dass der Aufruf dieser Methode sicher ist
  • bereitzustellen
  • Sicherheit : Bugs verhindern

Trotzdem kann die Konsistenz einer Methode auf zwei Arten umgangen werden:

  • const_cast : Entferne die Konstante des Objekts
  • veränderbare Felder: erlauben die Änderung eines bestimmten Members, sogar durch eine const-Methode.
Heisenbug 23.08.2012 18:50
quelle

Tags und Links