Rückrufe und ihre verschiedenen Verwendungen in C
In C ist ein Rückruf ein aufrufbarer Wert (später besprochen), der von einer Klasse oder Funktion akzeptiert wird. Wird verwendet, um die aktuelle Logik basierend auf dem bereitgestellten Rückruf anzupassen.
Gründe für die Verwendung Rückrufe:
Was sind Callables in C ?
Rückrufe schreiben und aufrufen:
Funktionszeiger:
Zeiger auf Mitglied Funktion:
std::function Objekte:
Beispiele für die Verwendung von std::function:
Verallgemeinern Code:
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]); } }
Templatete Rückrufe:
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]); } }
Typnamen-Implementierung:
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; }
Das obige ist der detaillierte Inhalt vonWie funktionieren Rückrufe in C und welche verschiedenen Verwendungszwecke gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!