Lorsque vous découvrez le polymorphisme, vous voyez souvent quelque chose comme ça
class Base { int prv_member; virtual void fn(){} }
class Derived : Base { int more_data; virtual void fn(){} }
Qu'est-ce que l'upcasting ou downcasting? Est-ce (Derived*)base_ptr;
un upcast ou downcast?
Je l'appelle upcast parce que vous vous éloignez de la base pour quelque chose de plus spécifique. D'autres personnes m'ont dit que c'est un abattage parce que vous descendez une hiérarchie dans quelque chose de spécifique avec le sommet étant la racine. Mais d'autres semblent l'appeler comme je l'appelle.
Lors de la conversion d'un ptr de base en un ptr dérivé, est-il appelé upcasting ou downcasting? et si quelqu'un peut créer un lien vers une source officielle ou expliquer pourquoi cela s'appelle ça génial.
virtual
est inutile mais ne fait pas "mal". Pouvez-vous expliquer pourquoi vous pensez qu'il ne devrait pas du tout être utilisé dans ce contexte?Réponses:
C'est un abattu: voir l' article de Wikipedia à ce sujet.
la source
Dans la plupart des langues (pour autant que je sache), les généralisations généralisées sont effectuées automatiquement. Donc, généralement, si vous parlez d'une distribution au sein d'une hiérarchie, vous faites référence à une distribution spécialisée. À mon humble avis, la plupart des personnes désireuses de séparer les deux types appellent le casting spécialisé abattu parce qu'elles considèrent la hiérarchie d'héritage comme un arbre. Et en informatique, la racine est représentée comme étant au sommet. La raison derrière cela est soit une convention, soit, plus probablement, une haine profondément enracinée pour les biologistes parmi les informaticiens. (Tous les jeux de mots voulus.)
EDIT: C'est peut-être une haine enracinée au sommet.
la source
Pensez à la façon normale de dessiner un arbre avec la "base" en haut de la page et les feuilles en bas. Si vous représentez votre hiérarchie de classe de cette façon, avec la classe de base en haut et les feuilles quelque part en dessous, la conversion ascendante et descendante devient littérale - quelque chose qui remonte la page d'une feuille vers la base est cast et quelque chose qui se déplace vers le bas de la page de la base vers une feuille est un cast down.
la source