lnt-make-member-function-const
멤버 함수가 개체의 상태를 수정하지 않으면 키워드로 주석을 const
추가합니다. 이 지침은 C++ 핵심 지침 Con.2에서 제공됩니다.
예시
Linter는 개체의 상태를 수정하지 않기 때문에 getValue()
getRadius()
다음 코드에 두 번 플래그를 지정합니다.
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;
}
문제를 해결하는 방법
멤버 함수가 const
개체의 상태를 수정하지 않을 때 표시합니다. 이렇게 하면 코드 판독기와 컴파일러가 함수가 개체를 const
호출하는 것이 안전하다는 것을 알 수 있습니다.
다음 예제 const
에서는 다음에 추가 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;
}
편집기에서 이 변경 작업을 수행할 수 있습니다. 플래그가 지정된 기호에 커서를 놓고 잠재적 수정 표시를 선택한 다음 멤버 구성을 만듭니다.
커서가 getValue() 줄에 있고 **잠재적 수정 표시**가 나타나고 선택되었습니다. 이제 **멤버 const 만들기**가 표시되고 const가 추가된 get 값 함수가 표시됩니다. 이제 **멤버 구성**을 선택하여 변경할 수 있습니다.
플래그가 지정된 모든 멤버 함수에 대해 이 변경을 수행합니다.
설명
Visual Studio 2022 17.8에서 도입된 이 검사는 C++ 코드의 멤버 함수 사용에 중점을 const
둡니다. C++ 핵심 지침에서는 멤버 함수를 개체의 상태를 수정하지 않을 때 표시 const
할 것을 권장합니다.
이 검사의 현재 구현에서는 선언 후 멤버 함수에 추가할 const
수 있습니다. 멤버 함수가 개체의 상태를 수정하지 않는 경우 멤버 함수 const
를 처음부터 선언하는 것이 좋습니다.