Funktsiooniosutajate kasutamine C++-s

Funktsiooniosutajate Kasutamine C S



C++ keeles, funktsiooni näpunäited pakuvad tõhusat tööriista funktsioonide andmetena manipuleerimiseks. A funktsiooni osuti on muutuja, mis sisaldab funktsiooni mäluaadressi. See toimib sarnaselt tavalise osutiga, välja arvatud see, et see salvestab funktsiooni aadressi, mitte andmeobjekti aadressi. Oluline on seda meeles pidada funktsiooni näpunäited on lihtsalt teist tüüpi C++ muutujad ja sellisena tuleb need deklareerida ja lähtestada sarnaselt teiste muutujatega.

Funktsiooni osuti määratlemine

A deklareerimise süntaks funktsiooni osuti on järgmine:







tagastamise_tüüp ( * func_ptr_name ) ( parameetrite_loend ) ;



Siin func_ptr_name on selle nimi funktsiooni osuti , tagastamise_tüüp on funktsiooni tagastamise tüüp ja parameetrite_loend on parameetrite loend, mida funktsioon võtab.



Siin on koodinäide funktsioonikursori kasutamiseks C++ keeles.





#include
#include
kasutades nimeruumi std;

tühi kuubik ( int x )
{
cout << 'Arvu kuup on' << x * x * x << endl;
}

int main ( )
{
tühine ( * funPtr ) ( int ) ;
funPtr = & kuubik;
funPtr ( 5 ) ;
tagasi 0 ;
}

Ülaltoodud koodis on funktsiooni osuti kuulutatakse tühiseks (*funPtr)(int) , ja see lähtestatakse, salvestades funktsiooni cube() aadressi funPtr , mis tähendab seda funPtr osutab funktsioonile kuubik () . Seega võime kuubifunktsiooni kutsuda funPtr ( funktsiooni osuti ) nagu koodis funPtr (5).



Väljund

A funktsiooni osuti , vastupidiselt teistele viidatele, osutab pigem koodile kui andmetele. A funktsiooni osuti salvestab sageli käivitatava koodi alguse. Erinevalt tavalistest osutitest me ei kasuta funktsiooni näpunäited mälu eraldamiseks või vabastamiseks. Nagu ülaltoodud programmis nägime, on funktsiooni asukoha määramiseks võimalik kasutada ka funktsiooni nime. Samad reeglid, mis kehtivad tavaliste osutite puhul, kehtivad ka massiivi kohta funktsiooni näpunäited . Lülitite asemel saab kasutada funktsiooniosureid. A funktsiooni osuti saab esitada argumendina ja tagastada funktsioonist, täpselt nagu andmekursor.

Funktsiooniosutite eelised

Peamised eelised funktsiooni näpunäited on loetletud allpool.

1: koodi korduvkasutatavus

Üks kasutamise peamisi eeliseid funktsiooni näpunäited on see, et need võimaldavad koodis korduvkasutatavust. Selle asemel, et kirjutada iga olukorra jaoks unikaalseid funktsioone, saate kujundada funktsioone, mis on piisavalt üldised, et tulla toime erinevate sisendandmetega, määratledes funktsiooni osuti tippida ja kasutada seda järjepidevalt kogu koodis. Selle asemel peate vaid andma õiguse funktsiooni osuti käitusajal või konfiguratsioonifaili kaudu ja funktsioon kohandub praeguse töö nõudmistega. See mitte ainult ei kiirenda arendusprotsessi, vaid parandab ka teie koodi modulaarsust ja pikaajalist hooldatavust.

2: Dünaamiline käitumine käitusajal

Võimalus rakendada dünaamilist käitusaja käitumist on veel üks kasutamise eelis funktsiooni näpunäited . Näiteks võib teil olla funktsioon, mis teostab konkreetse arvutuse, kuid selle arvutuse teostamiseks kasutatav täpne algoritm sõltub kasutaja sisendist või süsteemitingimustest. Salvestades a funktsiooni osuti mis vastab igale võimalikule algoritmile, saate käivitamise ajal valida sobiva, kasutades if-else lauseid või muud tingimuslikku loogikat. Seda tehes saate arendada väga paindlikku koodi, mis suudab reageerida muutuvatele tingimustele, ilma et oleks vaja kogu programmi ümber ehitada.

3: paindlikkus

C++ keeles, funktsiooni näpunäited pakuvad tõhusat tööriista paindliku üldise koodi loomiseks. Funktsiooninäidikud on sisuliselt muutujad, mis hoiavad funktsiooni mälukoha aadressi. Need võimaldavad funktsioone salvestada andmestruktuuridesse, nagu massiivid või loendid, esitada argumentidena teistele funktsioonidele ja isegi kasutada dünaamiliselt õige funktsiooni valimiseks käitustingimuste või kasutaja sisendi põhjal.

Järeldus

Funktsiooninäidikud C++-s on tõhusad, mis toetavad dünaamilist käitusaja käitumist ja koodi taaskasutamist. Võite kirjutada äärmiselt paindliku ja kohanduva koodi, mis suudab aja jooksul muutuvate nõuetega kohaneda, salvestades funktsioonide aadressid muutujatesse. Funktsiooninäidikud on vajalikud iga professionaalse C++ kodeerija jaoks, hoolimata asjaolust, et nende õppimine võib nõuda tööd.