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:
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.