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:

Screenshot of the editor suggesting to make member 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.

Zobacz też

Omówienie lintera kodu IntelliSense dla języka C++