Panggil balik dan Pelbagai Kegunaannya dalam C
Dalam C , panggilan balik ialah boleh panggil (dibincangkan kemudian) yang diterima oleh kelas atau fungsi, digunakan untuk menyesuaikan logik semasa berdasarkan panggilan balik yang disediakan.
Sebab Penggunaan Panggilan Balik:
- Untuk menulis kod generik bebas daripada logik dalam fungsi yang dipanggil, membenarkan penggunaan semula dengan panggilan balik yang berbeza.
- Untuk memberitahu pemanggil tentang peristiwa tertentu, membolehkan statik dan menyusun -fleksibiliti masa.
Apakah Boleh Panggil dalam C ?
- Penunjuk fungsi (termasuk penunjuk kepada fungsi ahli)
- std::objek fungsi
- Ekspresi Lambda
- Ikatan ungkapan
- Objek fungsi (kelas dengan operator panggilan fungsi terlampau beban operator())
Menulis dan Memanggil Panggilan Balik:
Penunjuk Fungsi:
-
Notasi Jenis: return_type (*)(parameter_type_1, parameter_type_2, parameter_type_3)
-
Notasi Panggilan Balik: function_pointer(argument)
-
Notasi Penggunaan Panggilan Balik: function(argument_list, function_pointer)
Penunjuk kepada Ahli Fungsi:
Notasi Jenis:- return_type (class_type::*)(parameter_type_1, parameter_type_2, parameter_type_3)
Notasi Panggilan Balik: - (class_instance.*member_function_pointer)(argument)
Panggil Balik Penggunaan Notasi:- function(argument_list, class_instance, member_function_pointer)
std::function Objek:
Notasi Jenis:- std::function
Callback Call Notation :- function_object()
Notasi Penggunaan Panggilan Balik:- function(argument_list, function_object)
Contoh Menggunakan std::function:
Mengerti Kod:
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]);
}
}
Panggil Balik Bertemplat:
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]);
}
}
Pelaksanaan Nama Jenis:
Atas ialah kandungan terperinci Bagaimana Panggilan Balik Berfungsi dalam C , dan Apakah Pelbagai Kegunaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn