используя c ++ const для введенных пользователем данных? - PullRequest
3 голосов
/ 26 октября 2011

Предположим, что я хотел прочитать целое число из cin, а затем сделать его неизменным. Я могу сделать:

int a;
cin >> a;
const int b = a;

Тогда у меня будет переменная (b), которая инициализируется пользовательскими данными, но не может быть изменена. Тем не менее, я думаю, что я злоупотребляю здесь ключевым словом const. Это приемлемая вещь? С компилятором все в порядке, но мне просто интересно, правильно ли это с стилистической точки зрения.

Ответы [ 4 ]

4 голосов
/ 26 октября 2011

Это совершенно нормально.Вы можете создавать константные переменные из неконстантных данных, даже введенных пользователем данных.

Вы можете даже написать функцию, чтобы у вас не было переменной stray a, сидящей потом.Например:

int read_int(std::istream& in) {
  int a;
  in >> a;
  return a;
}

int const b = read_int(std::cin);
2 голосов
/ 26 октября 2011

Это философский вопрос.:)

На мой взгляд, вы не делаете какой-либо стилистической аберрации.Вы определили переменную, которая с этой точки больше не изменяется.История значения этой переменной незначительна.:)

0 голосов
/ 26 октября 2011

Хотя я согласен с Робом и Дэвидом, в IMO лучше сделать ссылку b, когда это возможно:

int a;
cin >> a;
const int &b = a;

Хотя в случае с int вы не сможете сэкономить много, в случае больших объектов выСохраню копию звонка и память.

0 голосов
/ 26 октября 2011

Всё хорошо. Вы уверены, что значение 'b' никогда не изменится в контексте запущенной программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...