Какой сценарий может потребовать использование \ потребность в константном указателе на (неконстантные \ константные) данные

Я понимаю концепцию 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, они могут оптимизировать более агрессивно.
2

Другие решения