Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Perwakilan Boleh Meningkatkan Fleksibiliti dan Kebolehselenggaraan dalam Kod C?
Perwakilan dalam C ialah binaan pengaturcaraan yang membolehkan anda menghantar penunjuk fungsi sebagai hujah. Ini membolehkan anda membuat panggilan balik yang boleh digunakan secara tak segerak atau dalam konteks yang berbeza.
Terdapat pelbagai pendekatan untuk melaksanakan perwakilan dalam C , termasuk:
Functors ialah objek yang mentakrifkan fungsi operator(), dengan berkesan menjadikannya boleh dipanggil.
struct Functor { int operator()(double d) { return (int)d + 1; } };
Ekspresi Lambda menyediakan sintaks ringkas untuk mencipta perwakilan sebaris:
auto func = [](int i) -> double { return 2 * i / 1.15; };
Penunjuk fungsi langsung boleh digunakan untuk mewakili perwakilan:
int f(double d) { ... } typedef int (*MyFuncT)(double d);
Penunjuk kepada fungsi ahli menyediakan cara yang pantas untuk membuat perwakilan untuk ahli kelas:
struct DelegateList { int f1(double d) { } int f2(double d) { } }; typedef int (DelegateList::* DelegateType)(double d);
std::function ialah templat C standard yang boleh menyimpan sebarang boleh panggil, termasuk lambdas, functors dan penunjuk fungsi.
#include <functional> std::function<int(double)> f = [any of the above];
Pengikatan membolehkan anda menggunakan sebahagian hujah kepada perwakilan, menjadikannya mudah untuk memanggil fungsi ahli:
struct MyClass { int DoStuff(double d); // actually (MyClass* this, double d) }; std::function<int(double d)> f = std::bind(&MyClass::DoStuff, this, std::placeholders::_1);
Templat boleh menerima sebarang boleh panggil yang sepadan dengan senarai hujah:
template <class FunctionT> int DoSomething(FunctionT func) { return func(3.14); }
Perwakilan ialah alat serba boleh dalam C yang membolehkan anda meningkatkan fleksibiliti dan kebolehselenggaraan kod anda. Dengan memilih pendekatan perwakilan yang sesuai untuk keperluan khusus anda, anda boleh menghantar fungsi sebagai parameter dengan berkesan, mengendalikan panggilan balik dan melaksanakan pengaturcaraan tak segerak dalam C .
Atas ialah kandungan terperinci Bagaimanakah Perwakilan Boleh Meningkatkan Fleksibiliti dan Kebolehselenggaraan dalam Kod C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!