Slik bruker du funksjonspekere i C++

Slik Bruker Du Funksjonspekere I C



I C++, funksjonspekere tilby et potent verktøy for å manipulere funksjoner som data. EN funksjonspeker er en variabel som inneholder en funksjons minneadresse. Den fungerer på samme måte som en standardpeker, bortsett fra at den lagrer adressen til en funksjon i stedet for adressen til et dataobjekt. Det er viktig å huske på det funksjonspekere er ganske enkelt en annen type variabel i C++, og som sådan må de deklareres og initialiseres på samme måte som andre variabler.

Definere en funksjonspeker

Syntaksen for å erklære en funksjonspeker er som følgende:







returtype ( * func_ptr_name ) ( parameter_list ) ;



Her, func_ptr_name er navnet på funksjonspeker , returtype er returtypen til funksjonen, og parameter_list er listen over parametere som funksjonen tar.



Her er et kodeeksempel for å bruke en funksjonspeker i C++.





#include
#include
bruker navneområde std;

ugyldig kube ( int x )
{
cout << 'Terningen av et tall er' << x * x * x << endl;
}

int main ( )
{
tomrom ( * moroPtr ) ( int ) ;
funPtr = & kube;
moroPtr ( 5 ) ;
komme tilbake 0 ;
}

I koden ovenfor er det funksjonspeker er erklært ugyldig (*funPtr)(int) , og den initialiseres ved å lagre adressen til cube()-funksjonen i moroPtr , som betyr moroPtr peker på funksjonen kube () . Dermed kan vi kalle kubefunksjonen ved å bruke funPtr ( funksjonspeker ) som i koden funPtr (5).



Produksjon

EN funksjonspeker , i motsetning til andre pekere, peker på kode i stedet for data. EN funksjonspeker lagrer ofte begynnelsen av kjørbar kode. I motsetning til standardpekere, bruker vi ikke funksjonspekere for å tildele eller frigjøre minne. Som vi så i programmet ovenfor, er det også mulig å bruke en funksjons navn for å bestemme plasseringen. De samme reglene som gjelder for vanlige pekere, gjelder også for en rekke funksjonspekere . Bruk av funksjonspekere kan brukes i stedet for bryterhus. EN funksjonspeker kan leveres som et argument og returneres fra en funksjon, akkurat som en datapeker kan.

Fordeler med funksjonspekere

De viktigste fordelene ved funksjonspekere er oppført nedenfor.

1: Gjenbruk av kode

En av de viktigste fordelene ved å bruke funksjonspekere er at de tillater gjenbruk i koden. I stedet for å måtte skrive unike funksjoner for hver omstendighet, kan du designe funksjoner som er generelle nok til å håndtere en rekke ulike typer inndata ved å definere en funksjonspeker skriv inn og bruk den konsekvent gjennom hele koden. I stedet er alt du trenger å gjøre å gi rettighetene funksjonspeker under kjøring eller gjennom en konfigurasjonsfil, og funksjonen vil tilpasse seg kravene til gjeldende jobb. Dette øker ikke bare utviklingsprosessen, men forbedrer også kodens modularitet og langsiktige vedlikehold.

2: Dynamisk kjøretidsatferd

Muligheten til å implementere dynamisk kjøretidsatferd er en annen fordel ved å bruke funksjonspekere . For eksempel kan du ha en funksjon som utfører en spesifikk beregning, men den nøyaktige algoritmen som brukes til å utføre den beregningen vil avhenge av brukerinndata eller systemforhold. Ved å lagre en funksjonspeker som tilsvarer hver mulig algoritme, kan du velge den riktige ved kjøring ved å bruke if-else-setninger eller annen betinget logikk. Ved å gjøre dette kan du utvikle svært fleksibel kode som kan reagere på endrede forhold uten å måtte gjenoppbygge et helt program.

3: Fleksibilitet

I C++, funksjonspekere tilby et potent verktøy for å lage fleksibel, generisk kode. Funksjonspekere er i hovedsak variabler som inneholder adressen til en funksjons minneplassering. De gjør det mulig å lagre funksjoner i datastrukturer som matriser eller lister, leveres som argumenter til andre funksjoner, og til og med brukes til dynamisk å velge riktig funksjon som skal utføres basert på kjøretidsforhold eller brukerinndata.

Konklusjon

Funksjonspekere i C++ er effektive som støtter dynamisk kjøretidsatferd og gjenbruk av kode. Du kan skrive ekstremt fleksibel og adaptiv kode som kan tilpasse seg endrede krav over tid ved å lagre adressene til funksjoner i variabler. Funksjonspekere er nødvendige for alle profesjonelle C++-kodere, til tross for at de kan kreve litt arbeid å lære.