Come utilizzare i puntatori di funzioni in C ++

Come utilizzare i puntatori di funzioni in C ++

In c++, Puntatori della funzione offrire uno strumento potente per manipolare le funzioni come dati. UN Puntatore della funzione è una variabile che contiene l'indirizzo di memoria di una funzione. Funziona in modo simile a un puntatore standard, tranne per il fatto che salva l'indirizzo di una funzione piuttosto che l'indirizzo di un oggetto dati. È fondamentale tenerlo presente Puntatori della funzione sono semplicemente un altro tipo di variabile in C ++ e come tali, devono essere dichiarati e inizializzati in modo simile ad altre variabili.

Definizione di un puntatore della funzione

La sintassi per dichiarare a Puntatore della funzione è come segue:

return_type (*func_ptr_name) (parameter_list);

Qui, func_ptr_name è il nome del Puntatore della funzione, return_type è il tipo di ritorno della funzione e parametro_list è l'elenco dei parametri che la funzione prende.

Ecco un esempio di codice per utilizzare un puntatore di funzione in c++.

#includere
#includere
Utilizzo dello spazio dei nomi std;
void cube (int x)

cout<<"The cube of a number is "<
int main ()

void (*funptr) (int);
FUNPTR = &cube;
FUNPTR (5);
restituzione 0;

Nel codice sopra, il Puntatore della funzione è dichiarato vuoto (*funptr) (int), ed è inizializzato memorizzando l'indirizzo della funzione cubo () in FUNPTR, intendendo che FUNPTR punta alla funzione cubo (). Pertanto, possiamo chiamare la funzione cubo usando il funptr (Puntatore della funzione) come nel codice funptr (5).

Produzione

UN Puntatore della funzione, Contrariamente ad altri puntatori, punta al codice piuttosto che ai dati. UN Puntatore della funzione Spesso memorizza l'inizio del codice eseguibile. A differenza dei suggerimenti standard, non utilizziamo Puntatori della funzione per allocare o liberare la memoria. Come abbiamo visto nel programma sopra, è anche possibile utilizzare il nome di una funzione per determinare la sua posizione. Le stesse regole che si applicano ai normali puntatori si applicano anche a una serie di Puntatori della funzione. L'uso di puntatori di funzione può essere utilizzato al posto dei casi di switch. UN Puntatore della funzione può essere fornito come argomento e restituito da una funzione, proprio come può un puntatore di dati.

Vantaggi dei puntatori della funzione

I principali vantaggi di Puntatori della funzione sono elencati di seguito.

1: riusabilità del codice

Uno dei vantaggi chiave dell'uso Puntatori della funzione è che consentono la riusabilità nel codice. Invece di dover scrivere funzioni uniche per ogni circostanza, è possibile progettare funzioni abbastanza generali da gestire una varietà di vari tipi di dati di input definendo a Puntatore della funzione Digita e utilizzalo costantemente in tutto il codice. Invece, tutto ciò che devi fare è fornire il diritto Puntatore della funzione In fase di esecuzione o tramite un file di configurazione e la funzione si adatterà alle esigenze del lavoro corrente. Ciò non solo accelera il processo di sviluppo, ma migliora anche la modularità del codice e la manutenibilità a lungo termine.

2: comportamento dinamico di runtime

La capacità di implementare il comportamento di runtime dinamico è un altro vantaggio dell'utilizzo Puntatori della funzione. Ad esempio, è possibile avere una funzione che esegue un calcolo specifico, ma l'algoritmo esatto utilizzato per eseguire che il calcolo dipenderà dall'input dell'utente o dalle condizioni di sistema. Conservando un Puntatore della funzione Ciò corrisponde a ciascun possibile algoritmo, è possibile selezionare quello appropriato in fase di esecuzione utilizzando le istruzioni IF-ELSE o altre logiche condizionali. In questo modo, è possibile sviluppare un codice altamente flessibile in grado di rispondere alle condizioni di alterazione senza necessità di una ricostruzione di un intero programma.

3: flessibilità

In c++, Puntatori della funzione Offri uno strumento potente per creare un codice flessibile e generico. Puntatori della funzione sono essenzialmente variabili che contengono l'indirizzo della posizione di memoria di una funzione. Consentono di archiviare le funzioni in strutture di dati come array o elenchi, fornite come argomenti ad altre funzioni e persino utilizzate per scegliere dinamicamente la funzione giusta da eseguire in base alle circostanze di runtime o all'ingresso dell'utente.

Conclusione

Puntatori della funzione In C ++ sono efficaci che supportano il comportamento di runtime dinamico e il riutilizzo del codice. È possibile scrivere un codice estremamente flessibile e adattivo in grado di adattarsi alle modifiche dei requisiti nel tempo memorizzando gli indirizzi delle funzioni nelle variabili. Puntatori della funzione sono necessari per ogni codificatore C ++ professionale, nonostante possano richiedere un po 'di lavoro per imparare.