was bedeutet const in c++ an verschiedenen Stellen

Lesezeit: 3 Minuten

Benutzer-Avatar
Laura

Was ist der Unterschied zwischen

    const string& getName() const {return name;}

und

    string& getName() const {return name;}

Was bedeutet const am Anfang und am Ende?

  • cprogramming.com/tutorial/const_correctness.html Dies ist ein gutes Tutorial zur Verwendung von const

    – Lucian

    7. Mai 2012 um 12:56 Uhr

  • mögliches Duplikat von Bedeutung von “const” zuletzt in einer C++-Methodendeklaration?

    – Juanchopanza

    7. Mai 2012 um 13:05 Uhr

  • mögliches Duplikat von Wie viele und welche Verwendungen von “const” in C++?

    – dmckee — Ex-Moderator-Kätzchen

    7. Mai 2012 um 16:55 Uhr

Benutzer-Avatar
Juanchopanza

Das const am Ende der Funktionssignatur bedeutet, dass die Methode a ist const Member-Funktionalso sind beide Methoden konstante Elementfunktionen.

Das const am Anfang bedeutet, dass alles, was zurückgegeben wird, konstant ist.

Das erste Beispiel ist eine const-Methode, die eine const-Referenz auf interne Daten zurückgibt und daher const-korrekt ist.

Die zweite ist eine konstante Methode, die einen nicht konstanten Verweis auf interne Daten zurückgibt. Dies ist nicht konstant, da es bedeutet, dass Sie die Daten eines konstanten Objekts ändern könnten.

Ein Aufruf einer const a-Methode kann keine Daten der Instanz ändern (mit Ausnahme von veränderlichen Datenelementen) und kann nur andere const-Methoden aufrufen.

Konstante Methoden können für konstante oder nicht konstante Instanzen aufgerufen werden, aber nicht konstante Methoden können nur für nicht konstante Instanzen aufgerufen werden.

Man gibt a zurück const Referenz und ist ein const Mitgliedsfunktion , die andere ist a const Mitgliedsfunktion.

const string& getName() const {return name;}

die zurückgegeben string kann nicht geändert werden, und die Methode ist const (siehe unten).

string& getName() const {return name;}

Die Methode kann keine Nicht-mutable Klassenmitglieder.

  • Unabhängig: Da sich die Funktion in keinem Bereich befindet, ist sie keine Member-Funktion, sondern nur eine Funktion, oder? 🙂 (vorausgesetzt, es ist nicht in der Header-Datei)

    – Phantasmagorie

    7. Mai 2012 um 12:58 Uhr

  • @phantasmagoria Sie können keine const-Funktion haben, die kein Mitglied ist, also liegt sie definitiv im Klassenbereich.

    – Luchian Grigore

    7. Mai 2012 um 12:58 Uhr

  • @phantasmagoria Das war höchstwahrscheinlich eine Zeile, die direkt aus der Klassendeklaration kopiert wurde. Deshalb ist es ein Liner.

    – Jo

    7. Mai 2012 um 12:59 Uhr


  • Beide sind konstante Elementfunktionen.

    – Juanchopanza

    7. Mai 2012 um 13:01 Uhr

  • @Luchian Grigore ja, das ist richtig, dann wäre “die Klassenmitglieder nicht zu ändern” irrelevant. Vielen Dank!

    – Phantasmagorie

    7. Mai 2012 um 13:02 Uhr

Benutzer-Avatar
AlexTheo

const string& getName() const {return name;}

return const reference bedeutet, dass Sie die Instanz nicht mehr zurückgeben können, nachdem Sie die Referenz darauf zurückgegeben haben.

string& getName() const {return name;}

const-Methode bedeutet, dass diese Methode den Zustand des Objekts mit Ausnahme der änderbaren Elementvariablen nicht ändert. Auch diese Methode kann zum Beispiel für ein konstantes Objekt aufgerufen werden:

class MyClass(){
public:
  void doSomethingElse()const;
  void notConstMethod();
};

void doSomething( const MyClass& obj ){
  obj.doSomethingElse();
  obj.notConstMethod(); //Error
}

  • Leute, ich kann die Code-Tags nicht einfügen und habe überhaupt keine Optionen. Was passiert?

    – AlexTheo

    7. Mai 2012 um 13:04 Uhr

Benutzer-Avatar
Adarsh ​​Kumar

Wir gebrauchen const im Präfix der Funktion, um sicherzustellen, dass alles, was von der Funktion zurückgegeben wird, konstant bleibt.

Und wir verwenden const als Postfix in der Funktionsdeklaration, um sicherzustellen, dass die Funktion keine Änderungen in der aktuellen Instanz der Klasse vornimmt, dh wenn die Member-Funktion der Klasse versucht, den Attributwert des aktuellen Objekts zu ändern, gibt der Compiler einen Fehler aus.

const-Funktion wird hauptsächlich verwendet für const-Objekt um sicherzustellen, dass die Funktion nicht versucht, aktuelle Objektdaten zu ändern.

1012570cookie-checkwas bedeutet const in c++ an verschiedenen Stellen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy