Ключевое слово auto
В C++, начиная с С++11, существует ключевое слово auto. Оно позволяет не прописывать тип переменной при её создании и определять его автоматически из выражения, которое используется для инициализации переменной.
Например:
auto year = 1918;
Компилятор увидит справа целое число и заменит auto
на int
.
По очевидным причинам, переменная, создаваемая при помощи типа auto
должна сразу же быть проинициализирована - иначе компилятор не сможет понять, к какому типу она принадлежит.
Очень важно понимать, что использование auto
не означает, что мы создаём какую-то переменную "без типа".
auto
- это просто синтаксический сахар для более удобного определения переменных.
Реальный пример использования
std::map<std::string, std::pair<std::optional<int32_t>, std::vector<std::string >>> f()
{
// ...
}
Предположим, у нас есть вот такая функция с ужасно длинным в плане написания возвращаемым значением. В данном контексте не важно, что такое std::map
, std::string
и прочее (это будет рассмотрено на следующих уроках) - важно только то, что возвращаемое значение очень длинное.
И теперь представим, что нам нужно положить результат выполнения этой функции в какую-то переменную. Без auto
, нам снова пришлось бы вручную прописывать весь этот ужас. А что, если нам нужно создать 5 переменных, которые хранят результат вызова этой функции?
Здесь как раз идеальная ситуация для использования auto
:
auto f_result = f();