Типы данных в языке C++________________________________715

С использованием введенной функции Show приведенный в разделе 12.11.2
пример просмотра списка можно упростить:

Pnew = РО;

while(Pnew != NULL)
(

Pnew->Show() ;

Pnew = Pnew->pr;

>

В C++ можно вводить спецификаторы доступа к данным-элементам и функци-
ям-элементам так же, как это делается в классе. Разрешаются спецификаторы
public (открытый) и private (закрытый). Закрытые элементы структуры могут
быть доступны только для функций-элементов этой структуры. Ни через объект,
ни через указатель на объект доступ к ним невозможен. Закрытыми объявляются
какие-то вспомогательные данные-элементы, не представляющие интереса для по-
льзователя, а также вспомогательные функции (утилиты), требующиеся для рабо-
ты основных функций-элементов структуры.

Открытые элементы структуры могут быть доступны для любых функций в
программе. Основная задача открытых элементов состоит в том, чтобы дать клиен-
там структуры представление о возможностях, которые она имеет. Это открытый
интерфейс структуры.

По умолчанию доступ к элементам структуры public — открытый. Если вам
надо спрятать от пользователя какие-то элементы, укажите спецификатор private,
завершающийся двоеточием, и помещайте после него объявления закрытых эле-
ментов. Все, что помещено после спецификатор private до конца структуры или до
спецификатора public, будет скрыто от пользователя. Например, в следующем
объявлении структуры

struct MyStr {

int x, у;

int Get() ;

private:

int a, b;

void F() ;

t;

данные х и у и функция Get — открытые и могут использоваться при работе со
структурой, а данные а и b и функция F — закрытые и ими может пользоваться
только функция Get.

Есть еще ряд особенностей, сближающих в C++ структуры и классы. Они бу-
дут рассмотрены в разделе 12.13, посвященном классам.

12.11.4 Битовые поля

Язык Си++ предоставляет возможность задавать количество битов, в которых
хранятся элементы типов unsigned или int структуры (а также класса и объедине-
ния — см. разделы 12.13 и 12.12). Такие элементы называются битовыми полями.
Битовые поля позволяют рационально использовать память с помощью хранения
данных в минимально требуемом количестве битов.

В структуре TPers, использовавшейся в предыдущих разделах, можно, напри-
мер, сократить затраты на хранение года рождения и пола сотрудника. Если ори-
ентироваться на даты до 2047 года, то для хранения года рождения достаточно 11
битов. Если вы рассчитываете, что ваша программа просуществует дольше, то мо-
жете даже выделить под год 12 битов — этого хватит на ближайшие две тысячи
лет. А под хранение сведений о поле вполне достаточна 1 бита. Таким образом, под
эти два элемента вам достаточно 2 байтов, а в описанной ранее версии структуры
под эти элементы отводилось 5 байтов: 4 по год плюс один по пол. Выигрыш 3 бай-