Какой сценарий может потребовать использование \ потребность в константном указателе на (неконстантные \ константные) данные
Я понимаю концепцию final
на Java или const
в C++ для принудительного использования константных значений и разрешения компилятору применять его для всех, кто использует модули, которые вы пишете.
Я не могу увидеть, где бы вы хотели иметь const
указатель, почему вы не хотите, чтобы указатель изменился независимо от того, являются ли данные постоянными или нет:
например
почему это?
char greetings[] = "Hello";
char * const p = greetings; // const pointer, non-const data
const char * const p = greetings; // const pointer and const data
Я не могу визуализировать пример, где вы хотите сохранить указатель const, это может быть для дескриптора файла или что-то подобное? или просто указатель на объект, который вы не хотите менять?
1 ответ
Решение
Вы можете захотеть сделать сам указатель постоянным по нескольким причинам:
- Помощь другим в понимании вашего кода. Когда вы объявляете указатель и делаете его постоянным, вы говорите читателям, что в остальной части вашей функции нет изменений, внесенных в этот указатель, поэтому у них будет лучшее представление о том, как вы используете указатель.
- Помогать другим поддерживать ваш код. Кто-то еще, кто будет поддерживать ваш код после того, как вы получите лучшее представление о том, что вы ожидаете сделать с указателем. Если он пытается передать неконстантную ссылку или указатель на указатель, который вы объявили
const
Компилятор собирается поймать эту ошибку. - Включить оптимизацию компилятора - когда компиляторы видят что-то объявленное
const
, они могут оптимизировать более агрессивно.