Jak pisać i używać obiektów funkcyjnych w C ++

Jak pisać i używać obiektów funkcyjnych w C ++
Obiekty funkcyjne, Znany również jako Functors, to sposób pisania kodu wielokrotnego użytku w C ++, który zapewnia bardziej elastyczne podejście do dostosowywania algorytmu. Obiekt, który może być używany jako funkcja i odpowiada na wywołania w taki sam sposób, jak funkcja standardowa jest znana jako a obiekt funkcji. Mogą być wykorzystywane do wdrażania złożonych operacji w kolekcjach lub ogólnie definiowania kroków przetwarzania. Poniższy esej zawiera szczegółowy przewodnik na temat pisania i używania obiekty funkcyjne w c++.

Te obiekty zachowują się jak funkcje, ale z dodatkowym stanem i funkcjonalnością. Można je wykorzystać do zapewnienia większej elastyczności i dostosowywania niż prostej funkcji i są powszechnie używane w pojemnikach takich jak std :: sort i std :: find_if.

Jak pisać obiekty funkcyjne?

Napisać obiekt funkcji, Musimy utworzyć klasę, która przeładowuje operator połączeń funkcyjnych (). Instancje klasy można wywołać tak, jakby były to konwencjonalne funkcje dzięki temu operatorowi, co jest kluczowym elementem obiekt funkcji. Składnia do przeciążenia operatora to:

klasa myFunctionObject
publiczny:
ReturnType Operator () (paramtype1 p1, paramtype2 p2,…)
// realizacja

;

Gdzie Powracający to rodzaj powrotu funkcji i Paramtype1, Paramtype2, i tak dalej są typy parametrów funkcji. Implementacja operatora () powinna wykonać logikę obiekt funkcji.

Jak używać obiektów funkcyjnych w C++

Po zdefiniowaniu klasy przeciążającej operator połączeń funkcyjnych i wykonuje logikę obiekt funkcji, Możemy go użyć w następujący sposób:

#włączać
Klasa Square
publiczny:
int operator () (int x) const
powrót x * x;

;
int main ()
Kwadratowy kwadrat;
liczba int = 5;
int wynik = kwadrat (liczba);
STD :: Cout << "The square of " << number << " is " << result << std::endl;
powrót 0;

W powyższym przykładzie konstruujemy klasę kwadratową, której funkcja operatora () zwraca kwadrat liczby całkowitej x, gdy jest przekazany jako argument. Tworzymy kwadratowy obiekt zwany kwadratem w funkcji Main () i używamy go, aby znaleźć kwadrat liczby liczb całkowitych.

Wyjście

Zalety obiektów funkcyjnych

Obiekty funkcyjne Zapewnij kilka zalet w zakresie tradycyjnych funkcji w C++. Oferują większą elastyczność podczas korzystania z algorytmów, ponieważ można je dostosować do wykonywania dowolnej operacji, w przeciwieństwie do tradycyjnych funkcji. Mogą również zawierać stan, który może być przydatny do utrzymywania informacji między wywołaniami, podczas gdy tradycyjne funkcje są całkowicie bezpaństwowe.

Dodatkowo, obiekty funkcyjne można przekazać jako argumenty innych funkcji, które mogą sprawić, że kod jest bardziej zwięzły i łatwiejszy do odczytania. Pozwalają nam również korzystać z funkcji C ++, takich jak szablony do pisania ogólnego kodu, który działa z różnymi typami danych, iterabami i algorytmami.

Jedna zaleta używania obiekt funkcji Zamiast prostej funkcji jest to, że może mieć dodatkowe stany lub funkcjonalność, które można dostosować.

Wniosek

Obiekty funkcyjne W C ++ jest przydatną techniką pisania kodu wielokrotnego użytku, który zapewnia większą elastyczność niż funkcje konwencjonalne. Możesz z nich skorzystać, tworząc klasę, która zastępuje operator połączeń funkcyjnych, który można następnie przekazać jako argumenty do algorytmów, które używają obiekty funkcyjne jako dane wejściowe. Za pomocą obiekty funkcyjne ma zalety bycia elastycznym, stanowym, ogólnym i przyjaznym dla użytkownika. Z obiekty funkcyjne, Możemy napisać bardziej ekspresyjny, kompaktowy i zrozumiały kod, który jest również łatwiejszy do utrzymania.