Est-ce pas Downcasting?
-
02-10-2019 - |
Question
Si je fais
double d = 34.56;
int i = (int)d;
Suis-je pas "coulée en descente"?
ou
Est ce terme utilisé uniquement en termes de classes et d'objets?
Je suis confus parce que dans ce cas, nous sommes « Downcasting » d'un plus grand double
à un int
plus petit, mais en cas de classes, nous « baissés » d'un base class
plus petit à un plus grand derived class
.
Ne sont pas ces deux conventions, dans un certain sens, en face?
La solution
Non, vous n'êtes pas en bas casting. Vous êtes juste casting, et vous coupant quoi que ce soit après la décimale.
coulée ne s 'applique pas ici. Les primitives int
et double
sont des objets pas en C ++ et ne sont pas liés les uns aux autres de la manière deux objets dans une hiérarchie de classes sont. Ils sont des entités distinctes et primitives.
coulée vers le bas se réfère à l'acte de coulée objet de l'une dans l'autre objet qui en découle. Il se réfère à l'acte de se déplacer vers le bas de la racine de la hiérarchie des classes. Cela n'a rien à voir avec la taille des types en question.
Autres conseils
Downcasting est l'acte de coulée d'un référence d'une classe de base à l'une des ses classes dérivées.
http://en.wikipedia.org/wiki/Downcasting
Non, vous ne baissés, car double et int sont pas des classes.
int
et double
sont à la fois primitives et non des classes, de sorte que les concepts de classes ne leur sont pas applicables.
Oui, il est une conversion d'une « plus grande » à un type « plus petit » (en termes de taille numérique), mais il est juste un « casting » et non un « baissés »
Les deux ne sont pas tellement opposé comme simplement sans rapport. Dans le cas d'exemple, nous prenons une valeur d'un type, et la distribution prend cela et produit une valeur similaire d'un type qui est vaguement similaire, mais sans aucun rapport.
Dans le cas de traverser un arbre d'héritage avec quelque chose comme dynamic_cast
, nous prenons un pointeur (ou référence) à un objet, et ayant déjà décidé de le traiter comme un pointeur vers un autre type d'objet, nous sommes essentiellement (tentative de) traiter comme (quelque chose de plus proche) le type d'origine de l'objet à nouveau. En particulier, cependant, nous sommes pas créer une valeur nouvelle ou différente du tout -. Nous nous créons simplement une vision différente de la même valeur (soit le même objet réel)
Vous n'êtes pas Castings - vous convertir. Autre chose entièrement.