다음을 통해 공유


경고 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'.
        //...
    }
};

참고 항목

C.128: 가상 함수는 가상, 재정의 또는 최종 중 하나를 정확히 지정해야 합니다.