Sobes.tech
Junior

Mi a visszahívási függvények?

sobes.tech MI

Válasz az MI-től

Olyan függvény, amelyet egy másik függvény argumentumaként adnak át. A hívó függvény ezután végrehajthatja az átadott függvényt egy adott pillanatban vagy egy adott esemény bekövetkeztekor.

Alkalmazások:

  • Eseménykezelés (GUI, rendszer események)
  • Aszinkron műveletek
  • Viselkedési stratégiák
  • Általános algoritmusok

Példa:

C:

#include <stdio.h>

// Függvénymutató típusa, amely elfogad egy int-et és void-ot ad vissza
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Valamivel a értékkel: %d\n", value);
    if (callback != NULL) {
        callback(value); // Visszahívási függvény hívása
    }
}

void my_callback_function(int data) {
    printf("Visszahívási függvény végrehajtva az értékkel: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Visszahívási függvény nélkül
    return 0;
}

C++:

#include <iostream>
#include <functional> // std::function-hoz

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Valamivel a értékkel: " << value << std::endl;
    if (callback) { // Ellenőrzi, hogy van-e visszahívási funkció
        callback(value); // Visszahívási funkció hívása
    }
}

void my_callback_function(int data) {
    std::cout << "Visszahívási funkció végrehajtva az értékkel: " << data << std::endl;
}

int main() {
    do_something_with_callback(10, my_callback_function);

    // Lambda függvény visszahívásként
    do_something_with_callback(20, [](int data) {
        std::cout << "Lambda visszahívás végrehajtva az értékkel: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Visszahívási funkció nélkül

    return 0;
}