суббота, 24 марта 2012 г.

Куда «приклеивается» const?

При объявлении типа в C++ может быть не очевидно, к чему относится модификатор const. Например, что в точности означают такие объявления:

const int * p1;
int const * p2;
int * const p3;

И вообще, к чему относится const в общем случае?
Правило простое: const относится к тому, что стоит непосредственно слева от него; либо справа, если слева ничего нет.

Исходя из этого, p1 и p2 имеют одинаковые типы — указатель на константу.
В объявлении p3 const относится к *, то есть к указателю. Поэтому p3 — указатель-константа на readwrite-переменную.

Еще парочка примеров:
int const * const p4;  // константный указатель на константу
int * const * p5;  // указатель на константный указатель.

Ссылки по теме:









Понеслась

Очередная попытка завести блог про программирование. Буду сюда периодически постить про C++. Посмотрим, насколько меня хватит =)