static_cast (opérateur de transtypage C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Liste alphabétique des mots clés - Index


Catégorie

Mots clés spécifiques C++

Syntaxe

static_cast< T > (arg)

Description

Dans l'instruction static_cast< T > (arg), T doit être un pointeur, une référence, un type arithmétique ou un type enum. T et arg doivent tous deux être entièrement connus au moment de la compilation..

Un type complet peut être converti en un autre type par certaines méthodes déjà fournies par le langage ; une conversion effectuée avec static_cast aboutit exactement au même résultat.

Les types entiers peuvent être convertis en types enum. Une demande de conversion de arg en une valeur qui n'est pas un élément d'enum est non définie.

Le pointeur NULL est converti en la valeur de pointeur NULL du type de destination, T.

Un pointeur sur un type objet peut être converti en pointeur sur un autre type objet. Notez que le fait de pointer sur des types semblables peut engendrer des problèmes d'accès si ces types n'ont pas le même alignement.

Vous pouvez convertir explicitement un pointeur sur une classe X en pointeur sur une classe Y si X est une classe de base pour Y. Vous ne pouvez effectuer une conversion statique que sous les conditions suivantes :

  • Une conversion sans ambiguïté de Y en X doit exister.
  • X ne doit pas être une classe de base virtuelle.

Un objet peut être explicitement converti en un type de référence X& si son pointeur peut être explicitement converti en X*. Le résultat de la conversion est une lvalue. Aucun constructeur, ni aucune fonction de conversion n'est appelé.

Un objet ou une valeur peut être converti en un objet classe seulement si un constructeur ou un opérateur de conversion approprié a été déclaré.

Un pointeur sur un membre peut être explicitement converti en un pointeur sur un membre de type différent seulement si les deux types sont des pointeurs sur des membres de la même classe ou des pointeurs sur des membres de deux classes différentes dont l'une est dérivée, sans ambiguïté, de l'autre.

Lorsque T est une référence, le résultat de static_cast< T > (arg) est une lvalue. Le résultat d'une conversion de pointeur ou de référence se réfère à l'expression d'origine.

Voir aussi