Ich lerne jetzt C++, die OO Seite, und ich habe die ganze Zeit:C++ Unterschied zwischen virtuell = 0; und leere Funktion
class SomeClass{
virtual void aMethod()=0;
}
class AnotherClass{
void anotherMethod(){/*Empty*/}
}
class SomeClassSon : public SomeClass{
void aMethod(){/*Also Empty*/}
}
Mein Zweifel ist: Was ist der Unterschied zwischen den drei Methoden. Das virtuelle ist gleich Null, das leere und das virtuelle, da es vererbt ist, leer.
Warum kann ich nicht machen nur die SomeClassSon Methode wie der Vater (virtual void gleich Null?)
'SomeClass s; s.aMethod() 'ist kein gültiger Aufruf. – andre
Der Unterschied ist, mit der '= 0' in der Basisklasse muss jede abgeleitete Klasse * die Methode implementieren. –
@DavidSchwartz - muss die Funktion * implementieren, wenn die Klasse instanziiert * wird. Wenn die Funktion nicht implementiert ist, ist die Klasse abstrakt. –