Деклараторы в C ++ - PullRequest
       23

Деклараторы в C ++

1 голос
/ 13 октября 2011

В чем разница между init-декларатором и декларатором в C ++?Инициатор объявления может появиться в списке объявлений.Пример:

int x, y, z;

или

  int x;
  int y;
  int z;

, где x, y, z могут быть объявлениями-инициаторами или я должен говорить объявлениями?

1 Ответ

7 голосов
/ 13 октября 2011

Вот грамматика:

init-declarator-list:
init-declarator
init-declarator-list , init-declarator
init-declarator:
declarator initializer неавтоматического

То есть init-declarator-list может содержать объявление более чем одной переменной, а init-declarator должно содержать объявление только одной переменной.

Это означает, что в вашем случае первый код - init-declarator-list, а второй - init-declaratorinit-declarator-list оба, поскольку init-declarator-list может содержать только одну декларацию).

Но как это имеет значение, что вы называете, что? В повседневном использовании эта разница почти игнорируется.

Однако, если вы хотите узнать о стиле кодирования, то разные люди объявляют переменные по-разному. Я видел много хороших программистов, которые используют оба стиля. Я обычно записываю все связанные переменные в один и тот же список объявлений, например,

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

Если вы сгруппируете их, как указано выше, вам будет легче понять значение каждой переменной, просто узнав группу в первую очередь. Также проще использовать только один комментарий для каждого списка объявлений (точно так же, как я делал выше!), И все готово. Это также в некоторой степени помогает в обслуживании, хотя, вероятно, не так сильно.

...