Корректность констант в C и C ++

Я понимаю, что такое константная корректность, и мой вопрос не о том, что такое константная корректность. Так что я не жду объяснений или ссылок на C ++ - FAQ по этому поводу.

Мои вопросы:

  • Каковы семантические различия между const в C и const в C ++? и
  • В чем причина различия ?

Было бы неплохо получить цитаты из соответствующих стандартов, которые проясняют различия.

Я регулярно переключаюсь между C и C ++ и хотел бы знать важные моменты, о которых следует помнить при этом.

Кажется, я не помню причину этого (особая благодарность, если вы можете предоставить обоснование), но, насколько мне известно, я могу вспомнить:

  • константные переменные в C ++ имеют внутреннюю связь по умолчанию, тогда как в C они имеют внешнюю связь по умолчанию;
  • объекты const могут использоваться как значения времени компиляции в C ++, но не могут использоваться как значения времени компиляции в C;
  • Указатели на строковые литералы должны быть char const * в C ++, но в C может быть char * .

Что мне не хватает?

59
задан Keith Thompson 22 January 2016 в 00:39
поделиться