lnt-make-member-function-const
Gdy funkcja składowa nie modyfikuje stanu obiektu, dodaj do niego adnotację za pomocą słowa kluczowego const
. Te wskazówki pochodzą z wytycznych podstawowych języka C++ Con.2.
Przykład
Linter flaguje dwa razy następujący kod, ponieważ getValue()
i getRadius()
nie modyfikuje stanu obiektu:
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;
}
Jak rozwiązać problem
Oznacz funkcje const
składowe, gdy nie modyfikują stanu obiektu. Dzięki temu czytelnicy kodu i kompilator wiedzą, że funkcja jest bezpieczna do wywołania obiektu const
.
W poniższym przykładzie const
dodano element i getValue()
getRadius()
:
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;
}
Edytor może wprowadzić tę zmianę. Umieść kursor na oflagowanych symbolach i wybierz pozycję Pokaż potencjalne poprawki, a następnie pozycję Utwórz element członkowski const:
Kursor znajduje się w wierszu int getValue() i **Pokaż potencjalne poprawki** pojawił się i został wybrany. Teraz **Ustaw element członkowski const** jest widoczny i pokazuje funkcję get value z dodanym do niego const. Teraz możesz wybrać pozycję **Utwórz członka const**, aby wprowadzić zmianę.
Wprowadź tę zmianę dla wszystkich oflagowanych funkcji składowych.
Uwagi
Wprowadzona w programie Visual Studio 2022 17.8 ta kontrola koncentruje się na const
użyciu funkcji składowych w kodzie C++. Podstawowe wytyczne dotyczące języka C++ zaleca oznaczanie funkcji składowych tak, jakby const
nie modyfikowały stanu obiektu.
Bieżąca implementacja tego sprawdzania umożliwia dodawanie const
do funkcji składowych po ich deklaracji. Dobrym rozwiązaniem jest deklarowanie funkcji składowych od const
początku, jeśli nie modyfikują stanu obiektu.