Bagikan melalui


Peringatan C26443

Mengganti destruktor tidak boleh menggunakan penentu 'ambil alih' atau 'virtual' eksplisit.

Peringatan ini dihapus di Visual Studio 16.8 untuk mencerminkan perubahan pada C.128 dalam Panduan Inti C++.

Panduan Inti C++

C.128: Fungsi virtual harus menentukan tepat salah satu virtual, penimpaan, atau final.

Konensi saat ini pada Pedoman Inti adalah mengecualikan destruktor dari rekomendasi 'ambil alih secara eksplisit'.

Catatan

  • Bendera aturan menimpa destruktor yang secara eksplisit menggunakan penentu 'virtual' atau 'ambil alih'.
  • Destruktor masih dapat menggunakan penentu 'final' karena semantik khususnya.
  • Peringatan muncul pada definisi fungsi, bukan deklarasi. Mungkin membingungkan, karena definisi tidak memiliki penentu virtual, tetapi peringatannya masih sesuai.

Nama analisis kode: NO_EXPLICIT_DTOR_OVERRIDE

Contoh: Eksplisit 'ambil alih'

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

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

Lihat juga

C.128: Fungsi virtual harus menentukan tepat salah satu virtual, penimpaan, atau final