Cast
Le langage C++ le fournit que si une classe est dérivée d'une classe de base contenant des fonctions virtuelles, un pointeur vers ce type de classe de base peut être utilisé pour appeler les implémentations de fonctions virtuelles résidant dans l'objet de classe dérivée.Une classe contenant des fonctions virtuelles est parfois appelée « une classe polymorphe ».
Étant donné qu'une classe dérivée contient complètement les définitions des classes de base dont elle est dérivée de, il est possible de convertir un pointeur vers le haut de la hiérarchie de classes à l'un de ces classes de base.Étant donné un pointeur vers une classe de base, il peut être sûr d'effectuer un pointeur vers le bas de la hiérarchie.Il est possible si l'objet qui est désigné est réellement d'un type dérivé de la classe de base.Dans ce cas, l'objet réel est dit « l'objet complet. » On dit que le pointeur vers la classe de base indique un « sous-objet » de l'objet complet.Par exemple, considérez la hiérarchie de classes affichée dans l'illustration suivante.
hiérarchie de classes
Un objet de type C peut être visualisé comme indiqué dans l'illustration suivante.
classe C avec le sous-objet de B et un sous-objet
En fonction d'une instance de classe C, un sous-objet d' B et un sous-objet d' A .L'instance d' C, y compris A et les sous-objets d' B , est « l'objet complet. »
À l'aide de les informations de type au moment de l'exécution, il est possible de vérifier si des points d'un pointeur en fait à un objet complet et peut être sans risque casté pour indiquer un autre objet dans sa hiérarchie.L'opérateur de dynamic_cast peut être utilisé pour rendre ces types de casts.Il effectue également le contrôle à l'exécution nécessaire pour que le coffre-fort d'opération.
Pour la conversion des types non polymorphes, vous pouvez utiliser l'opérateur de static_cast (cette rubrique décrit ce qui différencie les conversions statiques et dynamiques de casting, et lorsqu'il convient d'utiliser chacun).
Cette section couvre les rubriques suivantes :