RTTI

RTTI

Run-time type information

Run-Time Type Information est un terme informatique utilisé pour signaler la capacité d'un langage de programmation à déterminer le type d'une variable lors de l'exécution d'un programme.

Bien que disponible dans la plupart des langages de programmation, le terme RTTI est souvent utilisé en référence au C++ qui par défaut, détermine le type à la compilation. Ce typage dynamique explicite en C++ – déclaré par l'utilisation de l'opération dynamic_cast<> – diffère de celui automatique de l'Objective-C pour lequel le typage et l'édition de liens sont réalisés lors de l'exécution.

Voici un exemple d'utilisation de la RTTI en C++ :

 class point;
 
 class trait {
   public:
     virtual void dessine() = 0; // fonction virtuelle pure : la classe, abstraite, ne peut être instanciée
     virtual ~trait() {};
 };
 
 class segment : public trait {  // classe dérivée de trait : doit implémenter dessine()
   public:
     point intersection(segment T);
     point intersection(arc A);
 };
 
 class arc : public trait {     // classe dérivée de trait : doit implémenter dessine()
   public:
     point intersection(segment T);
     point intersection(arc A);
 };
 
 point intersection(trait &T1, trait &T2) { 
   segment S2 = dynamic_cast<segment &>(T2);
   arc A2 = dynamic_cast<arc &>(T2);
   if(S2) return T1.intersection(S2);
   if(A2) return T1.intersection(A2);
 }

Comme on peut le voir, le but de la dernière fonction est de trouver le point d'intersection de deux traits dont les types (arc ou segment) ne seront connus qu'à l'exécution du programme (c'est tout l'intérêt de l'héritage : avoir des pointeurs de la classe mère sur des instances de classes filles). Le polymorphisme règle le problème pour la première variable (T1) puisque T1.intersection() appellera arc::intersection() ou segment::intersection() suivant le type de T1. Il reste cependant le problème du type de l'argument T2 puisque un simple appel à T1.intersection(T2); génère une erreur du compilateur ne sachant quelle fonction utiliser à l'édition de lien.

Si le typage échoue (ce qui est forcément le cas dans cet exemple, soit pour S2, soit pour A2), le programme peut générer une exception bad_cast.

Voir aussi

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Run-time type information ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article RTTI de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • RTTI — steht für: Real Time Traffic Information, englisch für „Echtzeit Verkehrsinformation“, ein Hauptthema der deutschen EU Ratspräsidentschaft 2007 Runtime Type Information, englisch für „Typinformation zur Laufzeit“, ein Konzept aus der… …   Deutsch Wikipedia

  • RTTI — …   Википедия

  • RTTI — noun Run Time Type Information (or Run Time Type Identification) …   Wiktionary

  • RTTI — Run Time Type Information (Computing » Software) **** Run Time Type Identification (Miscellaneous » Funnies) * Real Time Tuning Interface (Academic & Science » Electronics) …   Abbreviations dictionary

  • RTTI — Runtime Type Information …   Acronyms

  • RTTI — ● ►en sg. f. ►PROG►EXEC Run Time Type Information. Informations de type ajoutées aux objets en mémoire par certains compilateurs de langage de haut niveau (à commencer par C++) et permettant de vérifier le typage des données lors de l exécution… …   Dictionnaire d'informatique francophone

  • RTTI — Runtime Type Information …   Acronyms von A bis Z

  • RTTI — abbr. Run Time Type Identification (ANSI) comp. abbr. Runtime Type Information …   United dictionary of abbreviations and acronyms

  • Runtime Type Information — RTTI steht als Abkürzung für Runtime Type Information ( Typinformation zur Laufzeit ), ein Begriff aus der Softwareentwicklung und Bestandteil verschiedener Programmiersprachen. RTTI ermöglicht es, zur Laufzeit den Typ eines Objektes zu ermitteln …   Deutsch Wikipedia

  • Microsoft Visual C++ Name Mangling — is a mangling (decoration) scheme used in Microsoft Visual C++ series of compilers. It provides a way of encoding name and additional information about a function, structure, class or another datatype in order to pass more semantic information… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”