5.2.1 Функции-члены.

   


Назад  |  Вперёд

Посмотрим, как можно представить в языке понятие даты, используя для этого тип структуры и набор функций, работающих с переменными этого типа:

           struct date { int month, day, year; };
           date today;
           void set_date(date*, int, int, int);
           void next_date(date*);
           void print_date(const 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_birthday;

           void f()
           {
             my_birthday.set(30,12,1950);
             today.set(18,1,1991);

             my_birthday.print();
             today.next();
           }

Поскольку разные структуры могут иметь функции-члены с одинаковыми именами, при определении функции-члена нужно указывать имя структуры:

           void date::next()
           {
             if (++day > 28 ) {
                // здесь сложный вариант
             }
           }

В теле функции-члена имена членов можно использовать без указания имени объекта. В таком случае имя относится к члену того объекта, для которого была вызвана функция.


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.