Cuando aprendes sobre el polimorfismo, comúnmente ves algo como esto
class Base { int prv_member; virtual void fn(){} }
class Derived : Base { int more_data; virtual void fn(){} }
¿Qué es upcasting o downcasting? ¿Es (Derived*)base_ptr;
un upcast o downcast?
Lo llamo upcast porque te vas de la base a algo más específico. Otras personas me dijeron que es abatido porque estás bajando de una jerarquía a algo específico, siendo la parte superior la raíz. Pero otras personas parecen llamarlo como yo lo llamo.
Al convertir un ptr base en un ptr derivado, ¿se llama upcasting o downcasting? y si alguien puede vincular a una fuente oficial o explicar por qué se llama así de genial.
virtual
es innecesario pero no "duele". ¿Puedes explicar por qué crees que no debería usarse en absoluto en ese contexto?Respuestas:
Es abatido: vea el artículo de Wikipedia sobre él.
fuente
En la mayoría de los idiomas (que yo sepa), los moldes de generalización se realizan automáticamente. Por lo tanto, por lo general, si habla de un elenco dentro de una jerarquía, se refiere a un elenco especializado. En mi humilde opinión, la mayoría de las personas con el deseo de separar los dos tipos llaman a la especialización rechazada porque piensan en la jerarquía de herencia como un árbol. Y en ciencias de la computación, la raíz se representa en la parte superior. La razón detrás de esto es una convención o, más probablemente, un profundo odio a los biólogos entre los informáticos. (Todos los juegos de palabras previstos).
EDITAR: Tal vez es un odio muy arraigado.
fuente
Piense en la forma normal de dibujar un árbol con la "base" en la parte superior de la página y las hojas en la parte inferior. Si representa su jerarquía de clases de esta manera, con la clase base en la parte superior y las hojas en algún lugar debajo, entonces la conversión ascendente y descendente se convierte en literal, algo que se mueve hacia arriba de la página desde una hoja hacia la base. cast y algo que se mueve hacia abajo de la página desde la base hacia una hoja es un down-cast.
fuente