Aracılığıyla paylaş


Uyarı C26443

Yıkıcı geçersiz kılınırken açık 'geçersiz kılma' veya 'sanal' tanımlayıcıları kullanılmamalıdır.

Bu uyarı, C++ Çekirdek Yönergelerinde C.128'de yapılan değişiklikleri yansıtmak için Visual Studio 16.8'de kaldırıldı.

C++ Temel Yönergeleri

C.128: Sanal işlevler tam olarak sanal, geçersiz kılma veya son değerlerden birini belirtmelidir.

Temel Yönergelerle ilgili geçerli fikir birliği, yıkıcıları 'açıkça geçersiz kıl' önerisinin dışında tutmaktır.

Notlar

  • Kural, açıkça 'sanal' veya 'geçersiz kılma' tanımlayıcılarını kullanan yıkıcıları geçersiz kılmaya bayrak ekler.
  • Yıkıcılar özel semantiği nedeniyle 'final' tanımlayıcısını kullanmaya devam edebilir.
  • 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ı: NO_EXPLICIT_DTOR_OVERRIDE

Örnek: Açık 'geçersiz kılma'

class Transaction {
public:
    virtual ~Transaction();
    // ...
};

class DistributedTransaction : public Transaction {
public:
    ~DistributedTransaction() override { // C26443
        // ...
    }
};

Ayrıca bkz.

C.128: Sanal işlevler tam olarak sanal, geçersiz kılma veya son işlevlerden birini belirtmelidir