C 中的委托是一种编程结构,允许您将函数指针作为参数传递。这使您能够创建可以异步调用或在不同上下文中调用的回调。
在 C 中实现委托有多种方法,包括:
函子是对象定义了一个operator()函数,有效地使它们可调用。
struct Functor { int operator()(double d) { return (int)d 1; } };
Lambda 表达式提供了用于内联创建委托的简洁语法:
auto func = [](int i) -> double { return 2 * i / 1.15; };
直接函数指针可用于表示委托:
int f(double d) { ... } typedef int (*MyFuncT)(double d);
指向成员函数的指针提供了一种为类成员创建委托的快速方法:
struct DelegateList { int f1(double d) { } int f2(double d) { } }; typedef int (DelegateList::* DelegateType)(double d);
std::function 是标准 C 模板,可以存储任何可调用对象,包括 lambda、仿函数、和函数指针。
#includestd::function f = [any of the above];
绑定允许您将参数部分应用于委托,方便调用成员函数:
struct MyClass { int DoStuff(double d); // actually (MyClass* this, double d) }; std::functionf = std::bind(&MyClass::DoStuff, this, std::placeholders::_1);
模板可以接受任何与参数列表匹配的可调用对象:
templateint DoSomething(FunctionT func) { return func(3.14); }
委托是 C 语言中的多功能工具,可让您增强代码的灵活性和可维护性。通过根据您的特定需求选择适当的委托方法,您可以有效地将函数作为参数传递、处理回调以及在 C 中实现异步编程。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3