Condividi tramite


Avviso C26443

L'override del distruttore non deve usare identificatori espliciti 'override' o 'virtual'.

Questo avviso è stato rimosso in Visual Studio 16.8 per riflettere le modifiche apportate a C.128 nelle linee guida di base di C++.

Linee guida di base di C++

C.128: Le funzioni virtuali devono specificare esattamente uno dei valori virtuali, di override o finali.

Il consenso corrente sulle linee guida di base consiste nell'escludere i distruttori dalla raccomandazione "override esplicitamente".

Note

  • La regola contrassegna l'override dei distruttori che usano in modo esplicito gli identificatori 'virtual' o 'override'.
  • I distruttori possono comunque usare l'identificatore "finale" a causa della relativa semantica speciale.
  • Gli avvisi sono visualizzati nelle definizioni di funzione, non nelle dichiarazioni. Può generare confusione, poiché le definizioni non hanno identificatori virtuali, ma l'avviso è ancora appropriato.

Nome dell'analisi del codice: NO_EXPLICIT_DTOR_OVERRIDE

Esempio: 'override' esplicito

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

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

Vedi anche

C.128: Le funzioni virtuali devono specificare esattamente uno dei valori virtuali, di override o finali