Jak používat ukazatele funkcí v C++

Jak Pouzivat Ukazatele Funkci V C



V C++, ukazatele funkcí nabízejí účinný nástroj pro manipulaci s funkcemi jako jsou data. A ukazatel funkce je proměnná, která obsahuje adresu paměti funkce. Funguje podobně jako standardní ukazatel kromě toho, že ukládá adresu funkce spíše než adresu datového objektu. Je důležité mít to na paměti ukazatele funkcí jsou prostě jiným druhem proměnných v C++ a jako takové musí být deklarovány a inicializovány podobně jako jiné proměnné.

Definování ukazatele funkce

Syntaxe pro deklaraci a ukazatel funkce je následující:







návratový_typ ( * func_ptr_name ) ( seznam_parametrů ) ;



Tady, func_ptr_name je jméno ukazatel funkce , návratový_typ je návratový typ funkce a seznam_parametrů je seznam parametrů, které funkce přebírá.



Zde je příklad kódu pro použití ukazatele funkce v C++.





#include
#include
pomocí jmenného prostoru std;

prázdná kostka ( int x )
{
cout << 'kostka čísla je' << X * X * X << endl;
}

int main ( )
{
prázdnota ( * funPtr ) ( int ) ;
funPtr = & krychle;
funPtr ( 5 ) ;
vrátit se 0 ;
}

Ve výše uvedeném kódu je ukazatel funkce je prohlášeno za neplatné (*funPtr)(int) a inicializuje se uložením adresy funkce cube() do funPtr , znamenající, že funPtr ukazuje na funkci kostka () . Můžeme tedy volat funkci kostky pomocí funPtr ( ukazatel funkce ) jako v kódu funPtr (5).



Výstup

A ukazatel funkce , na rozdíl od jiných ukazatelů, ukazuje spíše na kód než na data. A ukazatel funkce často ukládá začátek spustitelného kódu. Na rozdíl od standardních ukazatelů nepoužíváme ukazatele funkcí k přidělení nebo uvolnění paměti. Jak jsme viděli v programu výše, je také možné použít název funkce k určení její polohy. Stejná pravidla, která platí pro normální ukazatele, platí také pro pole ukazatele funkcí . Místo spínacích skříní lze použít ukazatele funkcí. A ukazatel funkce lze zadat jako argument a vrátit z funkce, stejně jako datový ukazatel.

Výhody funkčních ukazatelů

Hlavní výhody ukazatele funkcí jsou uvedeny níže.

1: Znovupoužitelnost kódu

Jedna z klíčových výhod použití ukazatele funkcí je, že umožňují opětovné použití v kódu. Místo toho, abyste museli psát jedinečné funkce pro každou okolnost, můžete navrhnout funkce, které jsou dostatečně obecné na to, aby se vypořádaly s řadou různých druhů vstupních dat definováním ukazatel funkce zadejte a používejte jej konzistentně v celém kódu. Místo toho vše, co musíte udělat, je poskytnout právo ukazatel funkce za běhu nebo prostřednictvím konfiguračního souboru a funkce se přizpůsobí požadavkům aktuální úlohy. To nejen urychlí proces vývoje, ale také zlepší modularitu vašeho kódu a dlouhodobou udržovatelnost.

2: Dynamické chování za běhu

Schopnost implementovat dynamické běhové chování je další výhodou použití ukazatele funkcí . Můžete mít například funkci, která provádí konkrétní výpočet, ale přesný algoritmus použitý k provedení tohoto výpočtu bude záviset na vstupu uživatele nebo systémových podmínkách. Uložením a ukazatel funkce který odpovídá každému možnému algoritmu, můžete vybrat vhodný za běhu pomocí příkazů if-else nebo jiné podmíněné logiky. Tímto způsobem můžete vyvinout vysoce flexibilní kód, který dokáže reagovat na měnící se podmínky, aniž by bylo nutné celý program znovu sestavit.

3: Flexibilita

V C++, ukazatele funkcí nabízejí účinný nástroj pro vytváření flexibilního, generického kódu. Ukazatele funkcí jsou v podstatě proměnné, které drží adresu místa v paměti funkce. Umožňují ukládat funkce do datových struktur, jako jsou pole nebo seznamy, dodávat je jako argumenty jiným funkcím a dokonce je používat k dynamickému výběru správné funkce, která se má spustit, na základě podmínek běhu nebo vstupu uživatele.

Závěr

Ukazatele funkcí v C++ jsou efektivní, které podporují dynamické běhové chování a opětovné použití kódu. Můžete psát extrémně flexibilní a adaptivní kód, který se dokáže přizpůsobit měnícím se požadavkům v průběhu času ukládáním adres funkcí do proměnných. Ukazatele funkcí jsou nezbytné pro každého profesionálního kodéra C++, a to navzdory skutečnosti, že může vyžadovat určitou práci, aby se naučil.