dynamic_cast (opérateur de transtypage C++)
Remonter à Liste alphabétique des mots clés - Index
Catégorie
Description
Dans l'expression :
dynamic_cast< T > (ptr)
T doit être un pointeur, ou une référence, à un type classe défini ou void*. L'argument ptr doit être une expression résultant en un pointeur ou en une référence.
Si T est void*, ptr doit aussi être un pointeur. Le pointeur qui en résulte peut alors accéder à tout élément de la classe la plus dérivée dans la hiérarchie. Une classe de ce genre ne peut servir de base à aucune autre classe.
Les conversions de classe dérivée en classe de base, ou de classe dérivée en une autre, se présentent comme suit : si T est un pointeur et si ptr pointe sur une classe qui n'est pas de base, mais qui entre dans la hiérarchie, le résultat est un pointeur sur la sous-classe unique. Les références sont traitées de la même manière : si T est une référence et ptr une référence à une classe non base, le résultat est une référence à l'unique sous-classe.
La conversion d'une classe de base en classe dérivée ne peut être effectuée que si la base est de type polymorphe.
La conversion en classe de base est résolue au moment de la compilation. La conversion d'une classe de base en classe dérivée ou la conversion à travers une hiérarchie, est résolue au moment de l'exécution.
Si la conversion réussit, dynamic_cast< T > (ptr) convertit ptr au type souhaité. Si un transtypage de pointeur échoue, le pointeur a pour valeur 0 lorsqu'il est renvoyé. Si un transtypage à un type référence échoue, l'exception Bad_cast est déclenchée.
Remarque : Les informations de type à l'exécution (RTTI) sont nécessaires pour dynamic_cast.
Voir aussi
- const_cast (opérateur de transtypage)
- reinterpret_cast (opérateur de transtypage)
- static_cast (opérateur de transtypage)
- Rtti et option -RT