Se ho in C++:C++ Implementazione della funzione virtuale?
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
Poi se tolgo virtual
dalla definizione myfunction
in class B
, vuol dire che se avessi avuto un class C
basata su class B
, che non potevo ignorare il myfunction
dal momento che verrebbe compilato staticamente?
Inoltre, sono confuso su cosa succede quando si passa in giro pubblico, e privato qui. Se cambio la definizione di myfunction
in class B
in pubblica (e quella in class A
rimane privata), si tratta di una sorta di grave errore che non dovrei fare? Penso che le funzioni virtuali debbano mantenere lo stesso tipo in modo che sia illegale, ma ti preghiamo di sapere se è sbagliato.
Grazie!
non è necessario scrivere esplicitamente la parola chiave "virtuale" per i metodi della classe derivata. puoi ometterlo, ma è un buon stile averlo. – varnie