|
||||
|
5.2.1 Функции Члены Рассмотрим реализацию понятия даты с использованием struct для того, чтобы определить представление даты date и множества функций для работы с переменными этого типа: struct date (* int month, day, year; *); // дата: месяц, день, год *) date today; void set_date(date*, int, int, int); void next_date(date*); void print_date(date*); // ... Никакой явной связи между функциями и типом данных нет. Такую связь можно установить, описав функции как члены: struct date (* int month, day, year; void set(int, int, int); void get(int*, int*, int*); void next(); void print(); *); Функции, описанные таким образом, называются функциями членами и могут вызываться только для специальной переменной соответствующего типа с использованием стандартного синтаксса для доступа к членам структуры. Например: date today; // сегодня date my_burthday; // мой день рождения void f() (* my_burthday.set(30,12,1950); today.set(18,1,1985); my_burthday.print(); today.next(); *) Поскольку разные структуры могут иметь функции члены с одинаковыми именами, при определении функции члена необходимо указывать имя структуры: void date::next() (* if ( ++day » 28 ) (* // делает сложную часть работы *) *) В функции члене имена членов могут использоваться без явной ссылки на объект. В этом случае имя относится к члену того объекта, для которого функция была вызвана. |
|
||