Структуры в С++ могут иметь в качестве своих членов(в предыдущем примере это s и top) не только переменные но и функции. Для этого объявление функций вставляется в объявление структуры, например предыдущий пример стека можно объявить так:

struct stack
{
  char s[1000];
  int top;
  void reset()
  {
    top = -1;
  }
  void push(char c)
  {
    ++top;
    s[top] = c;
  }
  char pop()
  {
    --top;
    return s[top];
  }
};
 

 

   Функции-члены записаны так же как обычные функции. Отличие лишь в том что теперь они могут использовать переменные и функции "как есть", им не нужно передовать в качестве параметров такие переменные как s и top. Обращаются к функциям-членам так же как и к обычным членам: с помощью оператора ".", а указатели с помощью оператора "->". Приведем несколько фрагментов кода:

stack My_stack;
My_stack.reset();

stack *pMy_stack = &My_stack;
pMy_stack->push('A');

   Переменные структур и классов(позже мы узнаем что это) принято называть - "объектами", с этой минуты и мы их будем так называть.