б.
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. Через указатель на метод класса
ОтветитьУдалитьtypedef void (A::*ptr_f)(int);
ptr_f r=&A::f;
3a (a->*r)(5);
3б (a.*r)(5);
Функция или процедура, принадлежащая классу.
ОтветитьУдалитьВ С/C++ нет понятия "процедура"
Удалить