Бьерн Страуструп.
Язык программирования С++
124
такое ограничение, описав класс вместо структуры:
class date {
int month, day, year;
public:
void set(int, int, int);
void get(int*, int*, int*);
void
next();
void
print()
};
Служебное слово public (общий) разбивает описание класса на две части. Имена, описанные в первой
частной (private) части класса, могут использоваться только в функциях-членах. Вторая - общая часть -
представляет собой интерфейс с объектами класса. Поэтому структура – это такой класс, в котором по
определению все члены являются общими. Функции-члены класса определяются и используются точно
так же, как было показано в предыдущем разделе:
void date::print()
// печать даты в принятом в США виде
{
cout << month << '/' << day << '/' << year ;
}
Однако от функций не членов частные члены класса date уже ограждены:
void backdate()
{
today.day--; //
ошибка
}
Есть ряд преимуществ в том, что доступ к структуре данных ограничен явно указанным списком
функций. Любая ошибка в дате (например, December, 36, 1985) могла быть внесена только функцией-
членом, поэтому первая стадия отладки - локализация ошибки – происходит даже до первого пуска
программы. Это только частный случай общего правила: любое изменение в поведении типа date может
и должно вызываться изменениями в его членах. Другое преимущество в том, что потенциальному
пользователю класса для работы с ним достаточно знать только определения функций-членов.
Защита частных данных основывается только на ограничении использования имен членов класса.
Поэтому ее можно обойти с помощью манипуляций с адресами или явных преобразований типа, но это
уже можно считать мошенничеством.
Достарыңызбен бөлісу: