경고 C26435
가상 함수 'symbol'은 정확히 'virtual', 'override' 또는 'final' 중 하나를 지정해야 합니다(c.128).
C++ Core Guidelines
C.128: 가상 함수는 가상, 재정의 또는 최종 중 하나를 정확히 지정해야 합니다.
가독성을 높이기 위해 가상 동작의 종류는 불필요한 중복성 없이 명확하게 명시해야 합니다. 여러 가상 지정자를 동시에 사용할 수 있지만 가상 동작의 가장 중요한 측면을 강조하기 위해 한 번에 하나씩 지정하는 것이 좋습니다. 중요한 순서는 다음과 같습니다.
- 일반 가상 함수;
- 기본을 명시적으로 재정의하는 가상 함수입니다.
- 기본을 재정의하고 현재 상속 체인에서 최종 구현을 제공하는 가상 함수입니다.
주의
- 이 규칙은 가상성에 관한 특별한 규칙이 있기 때문에 소멸자를 건너뜁니다.
- 경고는 선언이 아닌 함수 정의에 표시됩니다. 정의에 가상 지정자가 없으므로 혼동될 수 있지만 경고는 여전히 적절합니다.
코드 분석 이름: SINGLE_VIRTUAL_SPECIFICATION
예: 중복 지정자
class Ellipse : public Shape {
public:
void Draw() override {
//...
}
};
class Circle : public Ellipse {
public:
void Draw() override final { // C26435, only 'final' is necessary.
//...
}
virtual void DrawCircumference() final { // C26435, should be neither 'virtual' nor 'final'.
//...
}
};