2011-10-13 2 views
1

Quelle est la différence entre un init-déclarator et un déclarateur en C++? Un init-déclarator peut apparaître dans init-declarator-list. Exemple:Déclarations en C++

int x, y, z; 

ou

int x; 
    int y; 
    int z; 

où x, y, z peut être init-déclarateurs ou devrais-je dire déclarateurs?

Répondre

7

Voici la grammaire:

init-declarator-list:
              init-declarator
              init-declarator-list , init-declarator
init-declarator:
              declarator initializer opt

C'est, init-declarator-listpeut contenir déclaration de plus d'une variable, et init-declaratordoit contenir la déclaration exactement une variable.

Cela signifie que, dans votre cas, le premier code est init-declarator-list et le second code est init-declarator (et init-declarator-list les deux, car init-declarator-list peut contenir une seule déclaration).

Mais en quoi cela s'appelle-t-il quoi? Dans un usage quotidien, cette différence est presque ignorable. Cependant, si vous voulez connaître le style de codage, des personnes différentes déclarent les variables différemment. J'ai vu beaucoup de programmeurs qui utilisent les deux styles. Je l'habitude d'écrire toutes les variables connexes dans la même liste de déclaration, par exemple

int x,y,z; //point coordinates 
int height, width; //dimensions 
std::string firstname, lastname; //name parts 
int left, top, right, bottom; //rectangle coordinates 

Si vous groupez les comme ci-dessus, il est plus facile pour un à comprendre le sens de chaque variable tout en reconnaissant le premier groupe. Il est également plus facile d'utiliser un seul commentaire pour chaque liste de déclaration (exactement comme je l'ai fait ci-dessus!) Et vous avez terminé. Il aide également à la maintenance dans une certaine mesure, probablement pas beaucoup cependant.

+0

Préférence de style pur, mais j'aime les grouper tout en faisant des init-déclarateurs distincts pour chaque variable/objet, chacun sur sa propre ligne. Si les noms des variables ne sont pas auto-documentés, je place mon commentaire directement au-dessus du groupement. –

+1

Je pense que cela ne couvre que l'init-déclarator, un déclarateur d'un autre côté a une signification très différente. – user103214

Questions connexes