¿Cómo se utilizan los punteros de función en aplicaciones en tiempo real?

¿Qué es el puntero de función?
F Pointer unción son punteros, es decir, qué punto variable a la dirección de una función.
Uno puede utilizar para reemplazar el interruptor / sentencias if, para realizar sus propios fines vinculantes o para poner en práctica las devoluciones de llamada.
punteros de función llamará funciones durante el tiempo de ejecución . Esto significa que las funciones se determinan en tiempo de ejecución, esto se llama polimorfismo tiempo límite enlace o Ejecutar (como funciones virtuales).

irtual funciones también utilizar el enlace . En el caso de la función virtual, la función de miembro de la clase base debe ser anulado por función.Este miembro de clase derivados también se llama la función sobre la equitación

¿Qué es la sintaxis de la función de puntero

returnType (* Función puntero) (parámetro1, parámetro2);

Por lo tanto, todas las funciones que se usan con el mismo puntero de función deben tener la mismos parámetros y el tipo de retorno

El puntero de función y función de cuya dirección se señaló deben tener la misma firma
Firma significa Tipo de retorno, Número de parámetros y los parámetros tipo de datos de la función debe ser el mismo

Por ejemplo:.
/ puntero / Función «ptr_func» toma dos enteros como parámetros y retorno valor entero.
1. int (* ptr_func) 2 int (int a, int b) ,

Si usted observa, las funciones de ambos 1 y 2 tiene la misma firma Ella. significa que ambas funciones tiene mismo tipo de retorno y parámetros (tipo de datos, Parámetros No.of).



Cómo declarar Pointer función en C y C + +?
C

int (* ptr_func) (int a, int b);

C + + int (BaseClass :: * ptr_func) (int a, int b);

Cómo inicializar o definir la función de puntero a NULL?
C
int (* ptr_func) (int a, int b) = NULL ;
C + +

int (BaseClass :: * ptr_func) (int a, int b) = NULL ;

Cómo asignar una dirección a un puntero de función? C

int (int a, int b);

int (* ptr_func) (int, int) = NULL ; ptr_func = sumar; / / short Form

Segunda manera:
/ * Asignación correcta utilizando la dirección de la función * /
ptr_func = &add; /> C + + int (BaseClass :: * ptr_func) (int a, int b) = NULL;

BaseClass
{
público:
int add (int a, int b)

{cout <<"BaseClass :: add" <
;};

};
/ / asignación correcta utilizando operador de dirección
Cómo comparar los punteros de función (== o =!)?
C