В сети нашел статьи, например такиую: статья.
Мне не понятен смысл auto
, зачем его придумали?
Самая большая польза от него - это отсутствие необходимости прописывать длинные типы переменных?
Говорят, что удобно автоматически определять тип переменной. В чем удобство? Это же совсем не удобно, когда ты не знаешь что приравнивается к auto
-переменной, без просмотра листинга кода и поиска того что присваивается? Указывая тип переменной явно, более наглядно видно что переменной такого-то типа присвоено то-то. В итоге нужно еще внимательней контролировать операцию присваивания.
Ну, наверное, действительно куда удобнее
for(std::vector<std::vector<std::pair<std::string,std::vector<std::pair<int,unsigned long>>>>>::iterator it = c.begin(); it != c.end(); ++it)
чем
for(auto it = c.begin(); it != c.end(); ++it)
Но вы забыли еще целый ряд применений auto
- например, в шаблонных лямбда-выражениях... Да или даже простых - попробуйте напишите без auto
что-то типа
auto sq = [](auto x){ return x*x; };
cout << sq(5) << endl;
cout << sq(5.5) << endl;
В шаблонах это очень упрощает жизнь, кстати. Просто это такой себе простенький вывод типа. Или вы возмущены и выводом типов, и считаете, что нужно писать не, скажем,
max(5,10)
а именно
max<int>(5,10)
(более длинные шаблонные функции с выводом типа аргументов не стал приводить)?
Не стараюсь переубедить, просто привожу свое мнение - почему я люблю auto
. А вам только скажу - насильно мил не будешь :), так что можете вполне просто обходиться без auto
- язык вообще не так уж много заставляет использовать, особенно нового - в силу обратной совместимости...
Примечание: само собой, все сказанное относится к современному auto
, о котором вы спрашиваете в вопросе (судя по отсутствие необходимости прописывать длинные типы переменных), а не о том auto
из статьи, которое когда-то описывало класс хранения переменных и никогда по сути не использовалось.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хорошим тоном в C/C++ считается использование const везде, где можно