Sobes.tech
Junior

Šta su funkcije povratnog poziva?

sobes.tech АИ

Одговор од АИ

Funkcija koja se prosleđuje drugoj funkciji kao argument. Funkcija koja je poziva može zatim izvršiti prosleđenu funkciju u određenom trenutku ili pri pojavi određenog događaja.

Primene:

  • Obrada događaja (GUI, sistemski događaji)
  • Asinhrone operacije
  • Strategije ponašanja
  • Opšti algoritmi

Primer:

C:

#include <stdio.h>

// Tip pokazivača na funkciju koja prihvata int i vraća void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Radim nešto sa vrednošću: %d\n", value);
    if (callback != NULL) {
        callback(value); // Pozivanje funkcije za povratni poziv
    }
}

void my_callback_function(int data) {
    printf("Funkcija povratnog poziva izvršena sa vrednošću: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Bez funkcije povratnog poziva
    return 0;
}

C++:

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

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Radim nešto sa vrednošću: " << value << std::endl;
    if (callback) { // Provera da li postoji funkcija povratnog poziva
        callback(value); // Pozivanje funkcije povratnog poziva
    }
}

void my_callback_function(int data) {
    std::cout << "Funkcija povratnog poziva izvršena sa vrednošću: " << data << std::endl;
}

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

    // Lambda funkcija kao povratni poziv
    do_something_with_callback(20, [](int data) {
        std::cout << "Lambda povratni poziv izvršen sa vrednošću: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Bez funkcije povratnog poziva

    return 0;
}