Perwakilan dalam C menyediakan mekanisme yang berkuasa untuk merangkum dan menghantar fungsi sebagai hujah. Ia membenarkan anda merawat fungsi seperti objek kelas pertama, membolehkan kod fleksibel dan boleh digunakan semula.
Perspektif Kotak Hitam:
Perwakilan pada dasarnya mewakili rujukan kepada fungsi. Anda boleh menetapkan fungsi kepada perwakilan, dan kemudian menggunakan fungsi itu melalui rujukan perwakilan. Ini mengasingkan pelaksanaan fungsi sebenar daripada kod yang memanggilnya.
Di Bawah Hud:
C menawarkan pelbagai cara untuk melaksanakan perwakilan:
Kelebihan Perwakilan:
Kes Penggunaan Khusus:
Contoh Pelaksanaan:
Menggunakan Fungsi:
struct Functor { int operator()(double d) { return (int) d + 1; } }; int main() { Functor f; int i = f(3.14); }
Menggunakan Ungkapan Lambda (C 11 dan seterusnya):
auto func = [](int i) -> double { return 2*i/1.15; }; double d = func(1);
Menggunakan std::function:
#include <functional> std::function<int(double)> f = [](double d) { return (int) d + 1; }; int main() { int i = f(3.14); }
Menggunakan Templat:
template <class FunctionT> int DoSomething(FunctionT func) { return func(3.14); }
Memahami perwakilan dalam C membolehkan anda memanfaatkan fleksibiliti dan faedah penggunaan semula kod mereka. Dengan memanfaatkan binaan berkuasa ini, anda boleh meningkatkan pangkalan kod anda dan menyelesaikan masalah yang rumit dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Perwakilan C Boleh Meningkatkan Fleksibiliti Kod dan Kebolehgunaan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!