Quando impari sul polimorfismo, comunemente vedi qualcosa del genere
class Base { int prv_member; virtual void fn(){} }
class Derived : Base { int more_data; virtual void fn(){} }
Che cos'è l'upgrade o il downcast? È (Derived*)base_ptr;
un upcast o un downcast?
Lo chiamo upcast perché stai andando lontano dalla base in qualcosa di più specifico. Altre persone mi hanno detto che è un downcast perché stai scendendo in una gerarchia in qualcosa di specifico con il top come root. Ma altre persone sembrano chiamarlo come lo chiamo io.
Quando si converte un ptr di base in un ptr derivato si chiama upcasting o downcasting? e se qualcuno può collegarsi a una fonte ufficiale o spiegare perché si chiama così bene.
virtual
non è necessaria ma non "fa male". Puoi approfondire il motivo per cui pensi che non dovrebbe essere usato affatto in quel contesto?