Kiedy uczysz się o polimorfizmie, często widzisz coś takiego
class Base { int prv_member; virtual void fn(){} }
class Derived : Base { int more_data; virtual void fn(){} }
Co to jest upcasting lub downcasting? Czy (Derived*)base_ptr;
jest upcast lub downcast?
Nazywam to upcastem, ponieważ odchodzisz od bazy w coś bardziej szczegółowego. Inni ludzie mówili mi, że to przygnębienie, ponieważ schodzisz w dół hierarchii do czegoś konkretnego, a górna część jest korzeniem. Ale inni ludzie nazywają to tak, jak ja to nazywam.
Czy podczas konwersji podstawowego ptr na pochodną ptr nazywa się to upcastingiem lub downcastingiem? a jeśli ktoś może link do oficjalnego źródła lub wyjaśnić, dlaczego nazywa się tak, niż wspaniale.
virtual
jest niepotrzebne, ale nie „boli”. Czy możesz wyjaśnić, dlaczego Twoim zdaniem nie należy go w ogóle stosować w tym kontekście?