ora sto imparando ++ C, il lato OO, e ho avuto tutto il tempo:differenza C++ tra virtuale = 0; e la funzione vuoto
class SomeClass{
virtual void aMethod()=0;
}
class AnotherClass{
void anotherMethod(){/*Empty*/}
}
class SomeClassSon : public SomeClass{
void aMethod(){/*Also Empty*/}
}
Il mio dubbio è: qual è la differenza tra i 3 metodi. Il virtuale è uguale a zero, quello vuoto e il virtuale, poiché è ereditato, vuoto.
Perché non posso solo fare il metodo SomeClassSon come il padre (virtual void è uguale a zero?)
'SomeClass s; s.aMethod() 'non è una chiamata valida. – andre
La differenza è, con '= 0' nella classe base, ogni classe derivata * deve * implementare il metodo. –
@DavidSchwartz - deve implementare la funzione * se la classe è istanziata *. Se la funzione non è implementata, la classe è astratta. –