Jestem teraz nauki C++ bok OO, i mam to cały czas:C++ różnica między virtual = 0; i funkcja pusta
class SomeClass{
virtual void aMethod()=0;
}
class AnotherClass{
void anotherMethod(){/*Empty*/}
}
class SomeClassSon : public SomeClass{
void aMethod(){/*Also Empty*/}
}
Moje wątpliwości to: jaka jest różnica między tymi metodami 3. Wirtualny jest równy zero, pusty i wirtualny, ponieważ jest dziedziczony, pusty.
Dlaczego nie mogę po prostu zrobić metodę SomeClassSon jak ojciec (virtual void równa zero?)
'SomeClass s; s.aMethod() 'nie jest prawidłowym połączeniem. – andre
Różnica polega na tym, że przy "= 0" w klasie bazowej każda klasa pochodna * musi * implementować metodę. –
@DavidSchwartz - musi zaimplementować funkcję *, jeśli klasa jest instancjonowana *. Jeśli funkcja nie jest zaimplementowana, klasa jest abstrakcyjna. –