Outils d'utilisateurs

Outils du Site


string_style_c

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

string_style_c [2014/09/01 15:19]
gbdivers créée
string_style_c [2015/02/16 16:51] (Version actuelle)
woly [Le type de chaîne char*]
Ligne 65: Ligne 65:
  
   * Il commence par rechercher s'il existe un opérateur ''<'' qui correspond aux types utilisés. Donc ''string'' et ''char*'' dans un cas et deux ''char*'' dans l'autre cas. Cet opérateur existe pour les deux ''char*'' (mais s'applique sur les pointeurs, pas sur le contenu de la chaîne de caractères) et est donc utilisé. Dans les cas de ''string'' et ''char*'', aucun opérateur ne convient.   * Il commence par rechercher s'il existe un opérateur ''<'' qui correspond aux types utilisés. Donc ''string'' et ''char*'' dans un cas et deux ''char*'' dans l'autre cas. Cet opérateur existe pour les deux ''char*'' (mais s'applique sur les pointeurs, pas sur le contenu de la chaîne de caractères) et est donc utilisé. Dans les cas de ''string'' et ''char*'', aucun opérateur ne convient.
-  * S'il n'existe pas d'opérateur, le compilateur essaie de convertir l'un des types pour trouver un opérateur ''<'' qui existe. Toutes les types ne sont pas convertissables dans n'importe quel autre type. Chaque classes spécifient les conversions qui sont autorisée ou non. Elles spécifient également si la conversion peut être implicite (le compilateur décide tout seul s'il réalise la conversion ou non) ou explicite (l'utilisateur doit écrit spécifiquement la conversion).+  * S'il n'existe pas d'opérateur, le compilateur essaie de convertir l'un des types pour trouver un opérateur ''<'' qui existe. Toutes les types ne sont pas convertissables dans n'importe quel autre type. Chaque classe spécifie les conversions qui sont autorisées ou non. Elles spécifient également si la conversion peut être implicite (le compilateur décide tout seul s'il réalise la conversion ou non) ou explicite (l'utilisateur doit écrit spécifiquement la conversion).
  
 Dans le cas qui nous intéresse, il existe une conversion implicite de ''char*'' en ''string''. Cela signifie que lorsque le compilateur rencontre un type ''char*'', il est autorisé à le convertir en ''string'' sans demander l'autorisation à l'utilisateur. Le compilateur résout donc le code ''s < "a"'' en convertissant la littérale chaîne en ''string'', puis appelle l'opérateur ''<'' qui s'applique sur deux ''string''. Le code ''s < "a"'' est donc interprété par le compilateur de la même façon que le code ''s1 < s2''. Dans le cas qui nous intéresse, il existe une conversion implicite de ''char*'' en ''string''. Cela signifie que lorsque le compilateur rencontre un type ''char*'', il est autorisé à le convertir en ''string'' sans demander l'autorisation à l'utilisateur. Le compilateur résout donc le code ''s < "a"'' en convertissant la littérale chaîne en ''string'', puis appelle l'opérateur ''<'' qui s'applique sur deux ''string''. Le code ''s < "a"'' est donc interprété par le compilateur de la même façon que le code ''s1 < s2''.
string_style_c.1409577594.txt.gz · Dernière modification: 2014/09/01 15:19 par gbdivers