Язык программирования C++ от Страуструпа


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


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

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 ) {

     // здесь сложный вариант

  }

}

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




Содержание  Назад  Вперед