Una vez que se ha definido un puntero a función, debe asignarle
la dirección de una función antes de poder usarlo. Del mismo
modo que la dirección de un array arr[10]
se
obtiene con el nombre del array sin corchetes
(arr
), la dirección de una función
func()
se obtiene con el nombre de la
función sin lista de argumentos
(func
). También puede usar una sintáxis más
explícita: &func()
. Para invocar la función,
debe dereferenciar el puntero de la misma forma que lo ha
declarado (recuerde que C y C++ siempre intentan hacer que las
definiciones se parezcan al modo en que se usan). El siguiente
ejemplo muestra cómo se define y usa un puntero a función:
//: C03:PointerToFunction.cpp // Defining and using a pointer to a function #include <iostream> using namespace std; void func() { cout << "func() called..." << endl; } int main() { void (*fp)(); // Define a function pointer fp = func; // Initialize it (*fp)(); // Dereferencing calls the function void (*fp2)() = func; // Define and initialize (*fp2)(); } ///:~
Listado 3.65. C03/PointerToFunction.cpp
Una vez definido el puntero a función fp
, se
le asigna la dirección de una función
func()
usando fp = func
(fíjese que la lista de argumentos no aparece junto al nombre de
la función). El segundo caso muestra una definición e
inicialización simultánea.