Глава 9. Описатели и спецификаторы данных________________________205
Элемент класса, определенный как статический, имеет в каждом объекте один и тот же адрес. Он просто один на всех. Обычно, то есть при отсутствии статических элементов, в каждом объекте оказывается полная копия всех элементов класса. Глава 11 "Функции" описывает демонстрационную программу, иллюстрирующую данную концепцию.
Существует ряд неординарных приемов программирования, использующих статические элементы для достижения желаемого результата. Допустим, для примера, функцию-член (member function), выполняющую одну и ту же задачу независимо от состояния объекта. Превращение такой функции в статическую означает, что можно • будет обойтись меньшим числом (всего одной — а не по одной на каждый экземпляр объекта) копий этой функции.
Битовые поля
Язык C++ необычайно многогранен. В разделе "Обращение к встроенному ассемблеру" вы увидите, что язык поддерживает даже его. Но сейчас темой обсуждения станет не столь низкоуровневый объект — битовые поля. C++ часто используется как язык системного программирования, где могут быть смешаны стили различных архитектур.
В качестве примера можно привести то, как машины, работающие с DOS и Windows, хранят данные о дате и времени, а именно в виде упакованных битовых полей. Необычно здесь то, что наименьшим типом данных является символ, или 8 бит. Переменная битового поля описывается обычным образом за исключением двух моментов. Во-первых, тип данных должен быть целочисленным и достаточно большим, чтобы разместить все биты, и, во-вторых, после имени переменной следует двоеточие и число, представляющее необходимое число бит. Например:
unsigned int aBit:!; // 1-битная величина может содержать // число от 0 до 1
unsigned int var:7; // 7-битная величина может содержать // число от 0 до 127
Двоичные и другие числа
Если вы вдруг забыли то, о чем пойдет речь далее, то вот вам небольшой экскурс в двоичную систему счисления. Слово bit происходит от словосочетания binary digit (двоичное число). Это число, состоящее из двоичных разрядов, или число с основанием 2. Все системы счисления могут быть представлены формулой:
аоР° + aiP1 + а;?2 + . . . + ctn-iP"-1 + (ХпР"
где а (альфа) — допустимая в данной системе цифра, р (бета) — основание системы счисления, а показатели степени означают порядковый номер. Если рассматривать это уравнение на примере десятичной системы, то