Outils pour utilisateurs

Outils du site


lang:cpp:cast

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
lang:cpp:cast [2024/11/12 12:45] – Modification des options de compilation des sanitizers rootlang:cpp:cast [2025/07/28 13:07] (Version actuelle) – [dynamic_cast] : précision sur la vitesse des dynamic_cast root
Ligne 37: Ligne 37:
  
 ''dynamic_cast'' permet de vérifier que le ''static_cast'' est possible. Il est nécessaire que la classe soit polymorphique (au moins une méthode virtuelle). ''dynamic_cast'' permet de vérifier que le ''static_cast'' est possible. Il est nécessaire que la classe soit polymorphique (au moins une méthode virtuelle).
 +
 +Le ''dynamic_cast'' utilise le pointeur de la table virtuel de l'objet et analyse une table contenant tous les pointeurs de tables virtuels. Si le programme est très gros et contient beaucoup de classes polymorphiques, le ''dynamic_cast'' peut être lent s'il est appelé très fréquemment. C'est pour cette raison que certains programmes implémentent une méthode virtuelle ''get_type'' qui renvoie un ''enum'' pour vérifier si le cast est possible.
 +
 +[[https://thewayofc.blogspot.com/2007/09/alternative-ways-to-implement-downcasts.html| Alternative ways to implement downcasts]] {{ :lang:cpp:cast:the_way_of_c_c_alternative_ways_to_implement_downcasts_7_28_2025_1_06_49_pm_.html |Archive du 11/09/2007 le 28/07/2025}}
  
 <code cpp> <code cpp>
lang/cpp/cast.txt · Dernière modification : de root