Правила программирования на С и С++. Главы 7-8
Страница 28. Используйте константы


 

113. Используйте константы.

В программы на С класс памяти const часто не включается. На самом деле это просто небрежность, но она мало влияет на возможности в С. Так как С++ гораздо разборчивее в отношении типов, чем С, то в С++ это гораздо более крупная проблема. Вы должны использовать модификатор cost везде, где можно; это делает код более надежным, и часто компилятор не принимает код, который его не использует. Особенно важно:

  • Всегда передавать указатели на константные объекты, если вы не модифицируете эти объекты. Объявление:
puts( const char *p )сообщает компилятору, что функция puts() не намерена модифицировать символы в массиве, переданном при помощи p. Это является чрезвычайно полезной порцией информации для сопровождения.
  • Все сообщения, не меняющие внутреннее состояние объекта, объявлять с модификатором const подобным образом:
class cls

{

public: int operator==( const cls ?p ) const ;};(Это тот модификатор const справа, относительно которого я тут распинаюсь). Этот const говорит компилятору, что передача сообщения объекту, объявленному константным, безопасна. Заметьте, что этот самый правый модификатор const в действительности создает следующее определение для указателя this: const current_class *this;Если код в этой константной функции попытается модифицировать любое поле данных класса или предпримет вызов другой функции-члена, не помеченной const, то вы получите сообщение об ошибке компиляции такого примерно содержания "не могу преобразовать указатель на const текущий_класс в указатель на текущий_класс". Упомянутым указателем в данном случае является this, и никогда не будет дозволено преобразование указателя на константу в указатель на переменную (потому что вы тогда могли бы модифицировать константу при помощи указателя).

Константные ссылки тоже важны и рассматриваются позже.

 
« Предыдущая статья   Следующая статья »