Ещё раз про указатель на функцию...
(мелькнуло в переписке)... В примере ниже оператором 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 [8404 просмотра]