БлогNot. Ещё раз про указатель на функцию...

Ещё раз про указатель на функцию...

(мелькнуло в переписке)... В примере ниже оператором typedef определён синоним FUN для функции, возвращающей указатель типа void * и не имеющей параметров.

Это даёт разве что другой способ описать прототип функции:

#include <iostream.h>

typedef void * FUN (void);

int main() {
 FUN f1;
 cout << endl << f1();
 return 0;
}

void * f1 (void) { return NULL; }

Во втором случае описан именно указатель на функцию типа void, не имеющую параметров. Это позволяет, например, "присваивать этому указателю имя функции", а точней, переставлять его на адрес любой функции с прототипом void имя_функции (void). Благодаря этому можно, скажем, гибко и "на лету" изменять логику обработки какого-то события или назначать другую функцию-обработчик для пункта меню:

#include <iostream.h>

typedef void (* FUN) (void);

void f (void) { cout << "f "; return; }

int main() {
 FUN f1=f;
 f1();
 return 0;
}

С другими типами объектов вместо void дело обстоит абсолютно аналогично.

28.08.2014, 15:11 [8282 просмотра]


теги: программирование c++

К этой статье пока нет комментариев, Ваш будет первым