Что означает указатель на константную функцию?

Указатели могут быть объявлены как указывающие на изменяемые (не-константные)данные или указатели на константные данные.
Указатели могут быть определены для указания на функцию.

Мои коллеги и я обсуждали использование "const" с указателями, и возник вопрос относительно использования constс указателями на функции.

Вот несколько вопросов:

  1. В чем смысл указателя на константную функцию по сравнению с указатель на не-константную функцию?
  2. Может ли функция быть константой?
  3. Может ли функция быть не-константной (мутабельной)?
  4. Каков правильный (безопасный)синтаксис для передачи указателя на функцию?

Правка 1:Синтаксис указателя на функцию

typedef void (*Function_Pointer)(void); // Pointer to void function returning void.

void function_a(Function_Pointer p_func); // Example 1.
void function_b(const Function_Pointer p_func); // Example 2.
void function_c(Function_Pointer const p_func); // Example 3.
void function_d(const Function_Pointer const p_func); // Example 4.

Приведенные выше объявления являются примерами обращения с указателем на функцию как с указателем на встроенный тип.

Данные, переменная или указатель памяти допускают вышеуказанные комбинации.
Итак, вопросы :могут ли указатели на функции иметь те же комбинации и что подразумевается под указателем на константную функцию (, такую ​​как пример 2)?

26
задан Thomas Matthews 13 April 2012 в 19:33
поделиться