Hvordan skrive og bruke funksjonsobjekter i C ++

Hvordan skrive og bruke funksjonsobjekter i C ++
Funksjonsobjekter, Også kjent som funktorer, er en måte å skrive gjenbrukbar kode i C ++ som gir en mer fleksibel tilnærming til tilpasning av algoritmer. Et objekt som kan brukes som en funksjon og svarer på samtaler på samme måte som en standardfunksjon er kjent som en Funksjonsobjekt. De kan brukes til å implementere komplekse operasjoner på samlinger eller for å definere behandlingstrinn generisk. Følgende essay vil gi en detaljert guide for hvordan du skriver og bruker Funksjonsobjekter i c++.

Disse objektene oppfører seg som funksjoner, men med ekstra tilstand og funksjonalitet. De kan brukes til å gi mer fleksibilitet og tilpasning enn en enkel funksjon, og brukes ofte i containere som std :: sort og std :: find_if.

Hvordan skrive funksjonsobjekter?

Å skrive en Funksjonsobjekt, Vi må lage en klasse som overbelaster funksjonsanropoperatøren (). Klassens tilfeller kan påberopes som om de var konvensjonelle funksjoner takket være denne operatøren, som er en avgjørende komponent i en Funksjonsobjekt. Syntaksen for overbelastning av operatøren er:

klasse MyFunctionObject
offentlig:
ReturnType Operator () (ParamType1 P1, ParamType2 P2, ...)
// gjennomføring

;

Hvor Returtype er returtypen på funksjonen, og ParamType1, ParamType2, Og så videre er funksjonsparametrene typer. Implementering av operatøren () bør utføre logikken til Funksjonsobjekt.

Hvordan bruke funksjonsobjekter i C++

Når vi har definert en klasse som overbelaster funksjonsanropoperatøren og utfører logikken til Funksjonsobjekt, Vi kan bruke det som følger:

#inkludere
Klassen Square
offentlig:
int operator () (int x) const
returner x * x;

;
int main ()
Firkantet kvadrat;
int nummer = 5;
int resultat = kvadrat (tall);
std :: cout << "The square of " << number << " is " << result << std::endl;
retur 0;

I eksemplet ovenfor konstruerer vi kvadratklassen, hvis operatør () -funksjonen returnerer kvadratet på et heltall X når det er bestått som et argument. Vi lager et firkantet objekt som kalles en firkant i hovedfunksjonen () og bruker den til å finne kvadratet på et heltallnummer.

Produksjon

Fordeler med funksjonsobjekter

Funksjonsobjekter Gi flere fordeler i forhold til tradisjonelle funksjoner i C++. De tilbyr mer fleksibilitet når de bruker algoritmer fordi de kan tilpasses for å utføre enhver operasjon, i motsetning til tradisjonelle funksjoner. De kan også inneholde en tilstand, som kan være nyttig for å opprettholde informasjon mellom samtaler, mens tradisjonelle funksjoner er helt statsløse.

I tillegg, Funksjonsobjekter kan sendes som argumenter til andre funksjoner, noe som kan gjøre koden mer kortfattet og lettere å lese. De lar oss også bruke C ++ -funksjoner som maler for å skrive generisk kode som fungerer med forskjellige datatyper, iterabler og algoritmer.

En fordel med å bruke en Funksjonsobjekt I stedet for en enkel funksjon er at den kan ha flere tilstander eller funksjonalitet som kan tilpasses.

Konklusjon

Funksjonsobjekter I C ++ er en nyttig teknikk for å skrive gjenbrukbar kode som gir større fleksibilitet enn konvensjonelle funksjoner. Du kan bruke dem ved å lage en klasse som overstyrer funksjonsanropoperatøren, som deretter kan sendes som argumenter til algoritmer som bruker Funksjonsobjekter som innganger. Ved hjelp av Funksjonsobjekter har fordelene ved å være fleksibel, statlig, generisk og brukervennlig. Med Funksjonsobjekter, Vi kan skrive mer uttrykksfull, kompakt og forståelig kode som også er lettere å opprettholde.