Бьерн Страуструп - Язык программирования С++. Главы 5-8
Страница 3. Функции-члены


 

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 ) {
              // здесь сложный вариант
           }
         }

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

 
« Предыдущая статья   Следующая статья »