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

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