Const avant ou const après?

Pour commencer, vous savez probablement que const peut être utilisé pour présenter des données d'un objet ou d'un pointeur non modifiables ou les deux.

const Object* obj; //can't change data
Object* const obj; //can't change pointer
const Object* const obj; //can't change data or pointer

Cependant, vous pouvez également utiliser la syntaxe:

Object const *obj; //same as const Object* obj;

La seule chose qui semble compter, c'est de quel côté de l'astérisque, vous mettez le const mot-clé. Personnellement, je préfère les mettre const sur la gauche de la type pour spécifier des données n'est pas modifiable car je trouve qu'il se lit mieux, à mon de gauche à droite mentalité, mais dont la syntaxe est venu en premier?

Plus important encore, pourquoi il y a deux façons correctes de la spécification const de données et dans quelle situation vous préférez ou besoin de l'un sur l'autre si?

Edit:

De sorte qu'il semble que cela a été une décision arbitraire, lorsque la norme pour la façon dont les compilateurs doivent interpréter les choses a été rédigé avant ma naissance. Depuis const est appliqué à ce qui est à gauche du mot-clé (par défaut?) Je suppose qu'ils ont compris, il n'y a pas de mal à ajouter "raccourcis" pour appliquer des mots-clés et le type de qualificatifs à d'autres égards, au moins jusqu'à ce que les modifications de déclaration par l'analyse d'un * ou & ...

Ce fut le cas en C et puis je suppose?

  • Dans les macros toujours ajouter const après le type, par exemple #define MAKE_CONST(T) T const au lieu de #define MAKE_CONST(T) const T de sorte que MAKE_CONST(int *) correctement s'étendre à int * const au lieu de const int *.
  • J'ai vu ces deux styles dénommé "est const" et "ouest " const".
  • mais vraiment, il devrait être "est const" et "const ouest".
InformationsquelleAutor AJG85 | 2011-03-31