Sobes.tech
Junior

Ce sunt funcțiile de apel înapoi?

sobes.tech AI

Răspuns de la AI

Funcție transmisă unei alte funcții ca argument. Funcția care o apelează poate apoi executa funcția transmisă într-un moment anume sau la apariția unui eveniment specific.

Aplicații:

  • Gestionarea evenimentelor (GUI, evenimente de sistem)
  • Operații asincrone
  • Strategii de comportament
  • Algoritmi generici

Exemplu:

C:

#include <stdio.h>

// Tip de pointer către funcție care acceptă un int și returnează void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Fac ceva cu valoarea: %d\n", value);
    if (callback != NULL) {
        callback(value); // Apelarea funcției de callback
    }
}

void my_callback_function(int data) {
    printf("Funcție de callback executată cu valoarea: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Fără funcție de callback
    return 0;
}

C++:

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

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Fac ceva cu valoarea: " << value << std::endl;
    if (callback) { // Verificare dacă funcția de callback există
        callback(value); // Apelare callback
    }
}

void my_callback_function(int data) {
    std::cout << "Funcție de callback executată cu valoarea: " << data << std::endl;
}

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

    // Funcție lambda ca callback
    do_something_with_callback(20, [](int data) {
        std::cout << "Callback lambda executat cu valoarea: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Fără funcție de callback

    return 0;
}