Sådan bruges funktionsmarkører i C++

Sadan Bruges Funktionsmarkorer I C



I C++, funktionsvisere tilbyde et potent værktøj til at manipulere funktioner som data. EN funktionsmarkør er en variabel, der indeholder en funktions hukommelsesadresse. Den fungerer på samme måde som en standardpointer, bortset fra at den gemmer adressen på en funktion i stedet for adressen på et dataobjekt. Det er vigtigt at huske på funktionsvisere er simpelthen en anden slags variabel i C++, og som sådan skal de erklæres og initialiseres på samme måde som andre variabler.

Definition af en funktionsmarkør

Syntaksen til at erklære en funktionsmarkør er som følgende:







return_type ( * func_ptr_name ) ( parameterliste ) ;



Her, func_ptr_name er navnet på funktionsmarkør , return_type er funktionens returtype, og parameterliste er listen over parametre, som funktionen tager.



Her er et kodeeksempel for at bruge en funktionsmarkør i C++.





#include
#include
bruger navneområde std;

ugyldig terning ( int x )
{
cout << 'Terningen af ​​et tal er' << x * x * x << endl;
}

int main ( )
{
ugyldig ( * sjovPtr ) ( int ) ;
funPtr = & terning;
sjovPtr ( 5 ) ;
Vend tilbage 0 ;
}

I koden ovenfor er funktionsmarkør erklæres ugyldig (*funPtr)(int) , og den initialiseres ved at gemme adressen på cube()-funktionen i sjovPtr , hvilket betyder det sjovPtr peger på funktionen terning () . Derfor kan vi kalde kubefunktionen ved at bruge funPtr ( funktionsmarkør ) ligesom i koden funPtr (5).



Produktion

EN funktionsmarkør , i modsætning til andre pointere, peger på kode i stedet for data. EN funktionsmarkør gemmer ofte begyndelsen af ​​eksekverbar kode. I modsætning til standardpointere bruger vi ikke funktionsvisere at allokere eller frigøre hukommelse. Som vi så i programmet ovenfor, er det også muligt at bruge en funktions navn til at bestemme dens placering. De samme regler, som gælder for normale pointere, gælder også for en række af funktionsvisere . Brug af funktionsvisere kan bruges i stedet for afbryderhuse. EN funktionsmarkør kan leveres som et argument og returneres fra en funktion, ligesom en datapointer kan.

Fordele ved funktionspointere

De vigtigste fordele ved funktionsvisere er anført nedenfor.

1: Genanvendelighed af kode

En af de vigtigste fordele ved at bruge funktionsvisere er, at de tillader genbrug i koden. I stedet for at skulle skrive unikke funktioner for enhver omstændighed, kan du designe funktioner, der er generelle nok til at håndtere en række forskellige slags inputdata ved at definere en funktionsmarkør skrive og bruge det konsekvent i hele din kode. I stedet er alt hvad du skal gøre at give ret funktionsmarkør ved kørsel eller gennem en konfigurationsfil, og funktionen vil tilpasse sig kravene til det aktuelle job. Dette fremskynder ikke kun udviklingsprocessen, men forbedrer også din kodes modularitet og langsigtede vedligeholdelse.

2: Dynamisk Runtime Behavior

Evnen til at implementere dynamisk runtime-adfærd er en anden fordel ved at bruge funktionsvisere . For eksempel kan du have en funktion, der udfører en specifik beregning, men den nøjagtige algoritme, der bruges til at udføre denne beregning, vil afhænge af brugerinput eller systemforhold. Ved at opbevare en funktionsmarkør der svarer til hver mulig algoritme, kan du vælge den passende ved kørsel ved hjælp af if-else-sætninger eller anden betinget logik. Ved at gøre dette kan du udvikle meget fleksibel kode, der kan reagere på ændrede forhold uden at nødvendiggøre en hel programgenopbygning.

3: Fleksibilitet

I C++, funktionsvisere tilbyde et potent værktøj til at skabe fleksibel, generisk kode. Funktionsvisere er i det væsentlige variabler, der indeholder adressen på en funktions hukommelsesplacering. De gør det muligt at lagre funktioner i datastrukturer som arrays eller lister, leveres som argumenter til andre funktioner og endda bruges til dynamisk at vælge den rigtige funktion til at udføre baseret på runtime-forhold eller brugerinput.

Konklusion

Funktionsvisere i C++ er effektive, der understøtter dynamisk runtime-adfærd og genbrug af kode. Du kan skrive ekstremt fleksibel og adaptiv kode, der kan tilpasse sig skiftende krav over tid ved at gemme funktioners adresser i variabler. Funktionsvisere er nødvendige for enhver professionel C++-koder, på trods af at de kan kræve noget arbejde at lære.