Sobes.tech
Junior

Co jsou to zpětná volání?

sobes.tech AI

Odpověď od AI

Funkce předávaná jiné funkci jako argument. Volající funkce může poté vykonat předanou funkci v určitou dobu nebo při výskytu určité události.

Použití:

  • Zpracování událostí (GUI, systémové události)
  • Asynchronní operace
  • Strategie chování
  • Obecné algoritmy

Příklad:

C:

#include <stdio.h>

// Typ ukazatele na funkci, která přijímá int a vrací void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Dělám něco s hodnotou: %d\n", value);
    if (callback != NULL) {
        callback(value); // Volání zpětné funkce
    }
}

void my_callback_function(int data) {
    printf("Funkce zpětného volání provedena s hodnotou: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Bez zpětné funkce
    return 0;
}

C++:

#include <iostream>
#include <functional> // Pro std::function

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Dělám něco s hodnotou: " << value << std::endl;
    if (callback) { // Kontrola existence zpětné funkce
        callback(value); // Volání zpětné funkce
    }
}

void my_callback_function(int data) {
    std::cout << "Funkce zpětného volání provedena s hodnotou: " << data << std::endl;
}

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

    // Lambda funkce jako zpětné volání
    do_something_with_callback(20, [](int data) {
        std::cout << "Lambda zpětné volání provedeno s hodnotou: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Bez zpětné funkce

    return 0;
}