Константы в С++ аналогичны константам в Си. Для представления константы в Си использовалась только директива препроцессора #define:
#define MAX 100
В С++ для представления константы рекомендуется использовать объявление переменной с начальным значением и ключевым словом const:
const тип ИмяПеременной = НачальноеЗначение;
const int n=10;
Область видимости константы такая же, как у обычной переменной. С помощью ключевого слова const можно объявить указатель на константу
const тип *ИмяПеременной;
const int *m; // m – указатель на константу типа int
const int n=3;
m = &n;
const int n=3;
m = &n;
Еще одна возможность const состоит в создании постоянного указателя на величину указанного типа
тип *const ИмяПеременной = Значение;
int i;
int *const ptri=&i;
int *const ptri=&i;
Использование const имеет несколько преимуществ по сравнению с #define.
- При объявлении константы с использованием const явно указывается тип величины.
- Константа, объявленная с использванием const, просто согласуется с производными типами, например, объявление массива:
const int base_vals[5] = { 1000, 2000, 3500, 6000, 10000};
- Идентификаторы const подчиняются тем же правилам, что и переменные. Можно создавать константы с различной областью видимости.
Однако не любое использование #define можно исключить с помощью const. Например, нельзя объявить массив с размером, заданным через const.
const size=3;
int a[size];
int a[size];
Такой код работать не будет.
Перечислимый тип данных
С помощью ключевого слова enum можно объявить особый целочисленный тип с набором именованных целых констант, называемых перечислимыми константами:
enum тег {СписокИменованныхКонстант};
enum day {sun, mon, tue, wen, thu, fri, sat};
enum flag {false, true};
enum flag {false, true};
С помощью такого определения создается целочисленный тип day с названиями 7 дней недели, каждое из которых является целочисленной константой.
Перечислимые константы — идентификаторы, которые по умолчанию имеют следующие значения: 0, 1, 2, 3, 4, 5, 6. Первому присваивается значение 0, и каждому последующему – на 1 больше предыдущего.
Если не устраивают значения по умолчанию, то перечислимые константы могут быть инициализированы произвольными целыми константами или константными выражениями
enum number {a=54,b,c=60,d=c+5}; // b=55, d=65
Перечислимая константа может быть объявлена анонимно (без тега):
enum {off,on} signal;
signal=on;
signal=on;
Назад: Язык C++