В С++ можно позволить компилятору самому определить тип переменной. При написании программ может быть невозможно заранее определить тип выражения. Для этих целей был введен спецификатор auto. В отличие от таких спецификаторов типа, как int или double, задающих определенный тип, спецификатор auto приказывает компилятору вывести тип из инициализатора.

//finalNumber инициализируется результатом суммы
auto finalNumber = num1 + num2;

Подобно любому другому спецификатору типа, используя auto можно определить несколько переменных.

auto i = 0, *p = &i; // i - int, p - указатель на int
auto &f = i; // f - ccылка на int

Спецификатор decltype возвращает тип его операнда. Это позволяет компилятору проанализировать выражение и определить его тип, но не вычислить его результат.

//result имеет тот же тип, который возвращает func()
decltype(func()) result = x;

Операнд обязательно должен быть определен. Ссылки не могут использоваться в качестве операнда.

int i = 0, &j = i;
decltype(i) x = 0; //x имеет тип int
decltype(j) y = x; //y имеет тип int& и связана с x
decltype(j) z; //ошибка: z - неинициализированная ссылка 


 Похожие публикации
2016-01-31 • Просмотров [ 363 ]