Accueil🇫🇷Chercher

Run-time type information

En informatique, Run-Time Type Information est utilisé pour signaler la capacité d'un langage de programmation à déterminer le type d'une variable pendant 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.

Exemple

Voici un exemple d'utilisation du RTTI en C++ :

struct Base {
    virtual void foo();
};
struct Derived : public Base {
    virtual void bar();
};
void f(Base* b) {
    b->bar(); // Ne compile pas car la classe Base n'a pas de méthode bar()
    // Le cast renvoie nullptr si le type de b n'est ou n'hérite pas de Derived
    if (Derived* d = dynamic_cast<Derived*>(b)) {
        d->bar();
    }
}

Dans cet exemple on souhaite appeler la méthode bar de l'objet passé en paramètre si celui-ci est de type réel Derived (ou héritant de Derived) (cf polymorphisme). L'appel ne peut pas se faire directement car la classe Base n'expose pas de méthode bar(). On va donc essayer de transtyper le pointeur de type Base* en un pointeur de type Derived* en utilisant mot clé dynamic_cast. Cet appel peut soit:

  • Renvoyer un pointeur null (nullptr) si le transtypage Ă©choue, c'est-Ă -dire que le type rĂ©el n'est pas Derived (ou hĂ©ritant de Derived)
  • Renvoyer un pointeur Derived* si le cast rĂ©ussi.

Pour faire cette vérification dynamic_cast a besoin d'avoir des informations sur le type au moment de l’exécution, et donc besoin du RTTI.

Voir aussi

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.