Как правильно объявить / назначить значения для переменных в C ++ - PullRequest
1 голос
/ 05 января 2020

Должен ли я объявлять переменные вверху моей программы на c ++ до присвоения значений:

int i;
std::string x;
std::string retval;

x = "foo";
i = 5;
retval = somefunction();

Или, альтернативно, правильно / приемлемо назначать значения переменным следующим образом:

int i = 5;
std::string x = "foo";
std::string retval = somefunction();

Я новичок в c ++, и я хотел бы знать, какой путь принят сообществом c ++.

Ответы [ 2 ]

6 голосов
/ 05 января 2020

Второй способ более идиоматический c C ++ и должен быть предпочтительным. См. Также основное руководство NR.1 :

Причина

Правило «все объявления сверху» является наследием старого программирования языки, которые не допускали инициализацию переменных и констант после оператора. Это приводит к увеличению длины программ и увеличению количества ошибок, вызванных неинициализированными и неправильно инициализированными переменными.

Это также более эффективно, поскольку первая - это конструкция по умолчанию, за которой следует присваивание, а вторая - просто конструкция.

4 голосов
/ 05 января 2020

Когда вы заранее знаете начальное значение, второй способ более эффективен, потому что вы вызываете только конструктор, а в первом вы сначала вызываете конструктор по умолчанию, а затем оператор присваивания.

...