Uyarı C26435
'symbol' sanal işlevi tam olarak 'virtual', 'override' veya 'final' (c.128) işlevlerinden birini belirtmelidir
C++ Temel Yönergeleri
C.128: Sanal işlevler tam olarak sanal, geçersiz kılma veya son işlevlerden birini belirtmelidir
Okunabilirliği geliştirmek için sanal davranış türü açıkça ve gereksiz yedeklilik olmadan belirtilmelidir. Aynı anda birden çok sanal tanımlayıcı kullanılabilse de, sanal davranışın en önemli yönünü vurgulayan bir tane belirtmek daha iyidir. Aşağıdaki önem sırası belirgindir:
- düz sanal işlev;
- tabanını açıkça geçersiz kılan sanal işlev;
- temelini geçersiz kılan ve geçerli devralma zincirinde son uygulamayı sağlayan sanal işlev.
Notlar
- Bu kural, sanallık ile ilgili özel kuralları olduğundan yıkıcıları atlar.
- Uyarılar, bildirimlerde değil işlev tanımlarında gösterilir. Tanımlarda sanal tanımlayıcılar olmadığından, ancak uyarı yine de uygun olduğundan bu durum kafa karıştırıcı olabilir.
Kod analizi adı: SINGLE_VIRTUAL_SPECIFICATION
Örnek: Yedekli tanımlayıcı
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'.
//...
}
};
Ayrıca bkz.
C.128: Sanal işlevler tam olarak sanal, geçersiz kılma veya son işlevlerden birini belirtmelidir