Supponiamo che io ho questo codiceC++ è ancora distruttore virtuale se non ci sono membri dati in derivato?
class Base{
public:
int getVal();
private:
int a, b;
};
class Derived::public Base{
public:
void printVal();
};
int main(){
Base *b = new Derived();
delete b;
}
Conosco un distruttore virtuale sarebbe eliminare le cose per bene, ma è brutto da eliminare con puntatore base (quando non c'è distruttore virtuale), anche se non ci sono funzioni virtuali e non membri dei dati nella classe derivata? Cosa succederà se questo è fatto?
Grazie, David. – snk
È pericoloso affidarsi a cose che "probabilmente funzionano" e presuppongono che "dovrebbe andare bene". È molto meglio scrivere codice che funzionerà, quindi tu sai che starai bene. –
James, mi assicurerò che ci sia sempre un distruttore virtuale. Questo è solo un ipotetico chiesto da qualcuno e non ha avuto una risposta per questo. Grazie a tutti e due. – snk