210 __ ____________Часть //. Программирование на C++
При описании какой-либо части программы — функции ли, переменной ли — как константы, вы как бы говорите: "Данная величина неизменна и на ее значение всегда можно положиться". При верности этого утверждения такой фрагмент программы уже, скорее всего, не нужно будет проверять на ошибки при тестировании. Если, конечно, вы используете правильную форму константы.
Если переменная или объект выступают в роли константы, то их следует и объявить соответственно. Программирование — это одно из занятий, в котором ясность окупается сторицей (это напоминает нам о правиле: "Если код сам по себе неясен, то следует написать комментарий"). Используя описатель const, вы не только "комментируете" наличие некоего постоянства, но и явно его задаете.
В данном разделе мы рассмотрим три случая "постоянства" применительно к переменным (или объектам, если пользоваться терминологией C++). Завершим мы этот раздел рассмотрением постоянных функций. Вы найдете здесь простой метод определения, какую форму констант ва^ следует использовать.
Постоянные объекты
В определении переменной есть три места, где можно использовать ключевое слово const. Определение переменной в общем виде выглядит следующим образом:
type var_narne [ = some_initial_value ] ;
Ключевое слово const может быть использовано слева от типа, между именами типа и переменной или в обоих местах вместе. В каждом случае смысл их слегка различен. Так как его легко забыть, давайте попробуем разобраться с этим поподробнее. Для иллюстрации определим тип как char*.
Имеется описание
char *COPYRIGHT = "by Automatic Resource Corporation";
Что будет, если добавить ключевое слово const слева от char*, между именем типа и переменной COPYRIGHT и в оба места? В первом случае:
const char *COPYRIGHT = "by Automatic Resource Corporation";
каждый символ строки будет неизменным, но указатель COPYRIGHT сможет указывать и на какое-то другое значение типа char*. Так как указатели содержат адреса, то указателю COPYRIGHT может быть присвоен новый адрес. То есть присваивание
COPYRIGHT = "Software Conceptions, Inc"; •
вполне допустимо. Однако