Maison >développement back-end >C++ >Comment fonctionnent les rappels en C et quelles sont leurs différentes utilisations ?
Les rappels et leurs diverses utilisations en C
En C , un rappel est un appelable (discuté plus tard) accepté par une classe ou une fonction, utilisé pour personnaliser la logique actuelle en fonction du rappel fourni.
Raisons d'utilisation Rappels :
Que sont les Callables en C ?
Écriture et appel de rappels :
Pointeurs de fonction :
Pointeur vers le membre Fonction :
std::function Objets :
Exemples utilisant std::function:
Code généralisant :
template<class R, class T> void stdf_transform_every_int_templ(int *v, unsigned const n, std::function<R(T)> fp) { for (unsigned i = 0; i < n; ++i) { v[i] = fp(v[i]); } }
Modèle Rappels :
template<class F> void transform_every_int_templ(int *v, unsigned const n, F f) { for (unsigned i = 0; i < n; ++i) { v[i] = f(v[i]); } }
Implémentation du nom de type :
template <class T> std::string type_name() { typedef typename std::remove_reference<T>::type TR; std::unique_ptr<char, void(*)(void*)> own (abi::__cxa_demangle(typeid(TR).name(), nullptr, nullptr, nullptr), std::free); std::string r = own != nullptr?own.get():typeid(TR).name(); if (std::is_const<TR>::value) r += " const"; if (std::is_volatile<TR>::value) r += " volatile"; if (std::is_lvalue_reference<T>::value) r += " &&"; else if (std::is_rvalue_reference<T>::value) r += " &&"; return r; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!