вторник, 12 октября 2010 г.

14. Что такое метод? Как вызывается метод?

а. Функция, принадлежащая классу. Методу доступны все поля класса (которому он принадлежит).
б.
class A{
  public:
  void f(int p);
};
1. Допустим, есть объявление: A a;
a.f(5); //вызов

2. Если есть указатель на A (A* pa), то:
2а. (*pa).f(5); //вызов
2б. pa->f(5); //синтаксически более удобный и рекомендуемый вызов.

Дополнение:
При инициализации класса A, в памяти создается метод f. На низком уровне он представляет собой обычную функцию с дополнительным параметром this (указатель на объект, вызвавший функцию). Поэтому a.f(5) заменяется компилятором на что-то вроде:
A__f(&a, 5);

3 комментария:

  1. 3. Через указатель на метод класса
    typedef void (A::*ptr_f)(int);
    ptr_f r=&A::f;
    3a (a->*r)(5);
    3б (a.*r)(5);

    ОтветитьУдалить
  2. Функция или процедура, принадлежащая классу.

    ОтветитьУдалить

Можно использовать теги <b>, <i>