Это означает, что это указатель const
на переменную const
.
Смотрите следующие примеры:
int x = 5; // non-const int
int* y = &x; // non-const pointer to non-const int
int const a = 3; // const int
int* const b = &a; // const pointer to non-const int
int const* const c = &a; // const pointer to const int
Таким образом, вы можете видеть, что две вещи, которые имеют потенциал, чтобы быть изменчивым, переменная и указатель. Любой из этих двух может быть const
.
А const
переменная работает так же, как вы бы себе:
int foo = 10;
foo += 5; // Okay!
int const bar = 5;
bar += 3; // Not okay! Should result in a compiler warning (at least)
const
указатель работает точно так же:
int foo = 10;
int bar = 5;
int* a = &foo;
a = &bar; // Okay!
int* const b = &foo;
b = &bar; // Not okay! Should also result in a compiler warning.
Каково правило определения того, что означает 'const'? Например, это все, что находится слева от 'const'? – BWG
@BWG См. [Этот пост] (https://stackoverflow.com/questions/7526152/easy-rule-to-read-complicated-const-declarations). В основном вы читаете справа налево, с несколькими исключениями. – CoryKramer
@ Цибер, который кажется ужасно неинтуитивным, поскольку на английском языке дескрипторы предшествуют цели. Спасибо за ответ! – Benjin