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;
}