lnt-make-member-function-const

Wenn eine Memberfunktion den Zustand des Objekts nicht verändert, kommentieren Sie sie mit dem Schlüsselwort const. Dieser Leitfaden stammt aus dem C++ Core-Leitfaden, Abschnitt Con.2.

Beispiel

Der Linter kennzeichnet den folgenden Code zweimal, da getValue() und getRadius() den Zustand des Objekts verändern:

class MyClass
{ 
public: 

  int getValue() { return value; }  // Flagged: ‘getValue’ doesn't modify the object's state. 
  void setValue(int newValue) { value = newValue; }  // OK: ‘setValue’ modifies the object's state.   

private: 

  int value = 42; 
}; 

double getRadius()
{   // Flagged: ‘getRadius’ doesn't modify the object's state. 
    return radius; 
} 

So beheben Sie das Problem

Markieren Sie Memberfunktionen const, wenn sie den Status des Objekts nicht verändern. Auf diese Weise können Leser des Codes und des Compilers erkennen, dass mithilfe der Funktion ein const-Objekt sicher aufgerufen werden kann.

Im folgenden Beispiel wurde const zu getValue() und getRadius() hinzugefügt:

class MyClass
{ 
public: 

  int getValue() const { return value; }  // Added const 
  void setValue(int newValue) { value = newValue; }  // OK: ‘setValue’ modifies the object's state.   

private: 

  int value = 42; 

}; 

double getRadius() const // added const
{   // ‘getRadius’ doesn't modify the object's state. 
    return radius; 
}  

Der Editor kann diese Änderung für Sie vornehmen. Platzieren Sie den Cursor auf das gekennzeichnete Symbol, und wählen Sie Show potential fixes (Potenzielle Fehlerbehebungen anzeigen) und dann Make member const (Member konstant machen) aus:

Screenshot of the editor suggesting to make member const.

Der Cursor befindet sich in der Zeile „int getValue()“, und es wurde **Potenzielle Fixes anzeigen** (Show potential fixes) angezeigt und ausgewählt. Jetzt ist **Make member const** sichtbar und zeigt die Get-Value-Funktion an, der „const“ hinzugefügt wurde. Sie können jetzt **Make member const** auswählen, um die Änderung vorzunehmen.

Nehmen Sie diese Änderung für alle gekennzeichneten Memberfunktionen vor.

Hinweise

Diese Überprüfung wurde In Visual Studio 2022 17.8 eingeführt und konzentriert sich auf die Verwendung von const für Memberfunktionen im C++-Code. Die C++ Core Guidelines empfehlen, Memberfunktionen als const zu kennzeichnen, wenn sie den Status des Objekts nicht verändern.

Mit der aktuellen Implementierung dieser Überprüfung können Sie nach ihrer Deklaration const zu Memberfunktionen hinzufügen. Es empfiehlt sich, Memberfunktionen von Anfang an als const zu deklarieren, wenn sie den Zustand des Objekts nicht verändern.

Siehe auch

IntelliSense-Codelinter für C++: Übersicht