Outils pour utilisateurs

Outils du site


lang:cpp:heritage

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lang:cpp:heritage [2017/05/31 13:06] – Création avec "Cast sur une classe avec héritage" rootlang:cpp:heritage [2020/03/10 23:07] (Version actuelle) – supprimée root
Ligne 1: Ligne 1:
-=====reinterpret_cast sur une classe avec héritage===== 
-Un ''static_cast'' ou un ''dynamic_cast'' ne pose pas de problème dans le cas d'héritage multiple. 
  
-Par contre, un ''reinterpret_cast'' d'un ''void *'' doit toujours se faire sur la classe la plus basse (la plus enfant). Un ''void *'' ne possède aucune information du type de la classe et donc le compilateur ne sait pas comment s'en sortir. Par exemple avec les méthodes virtuelles, il ne peut pas savoir à quelle classe appartient la première méthode en tête de la ''vtable''. Il y a les mêmes problèmes avec les attributs de la classe. 
- 
-[[https://stackoverflow.com/questions/2379427/multiple-inheritance-unexpected-result-after-cast-from-void-to-2nd-base-class|Source]], {{ :lang:cpp:heritage:c_-_multiple_inheritance_unexpected_result_after_cast_from_void_to_2nd_base_class_-_stack_overflow.maff |Archive}} 
lang/cpp/heritage.1496228797.txt.gz · Dernière modification : 2017/05/31 13:06 de root