C++(17):invoke

编程入门 行业动态 更新时间:2024-10-23 03:16:33

C++(17):<a href=https://www.elefans.com/category/jswz/34/1770156.html style=invoke"/>

C++(17):invoke

C++调用函数有多种形式,普通函数和函数指针使用(),成员函数通过.或->进行调用。

如果在模板中调用不同类型的函数,这会是一个问题,因为调用的形式是不一致的。

C++17引入了invoke,用来从形式上统一函数调用:

#include <iostream>
#include <functional>
using namespace std;auto f1 = [](int a, int b) { return a + b; };int f2(int a, int b) { return a + b; }class F{
public:int f3(int a, int b) { return a + b; };
};int main()
{cout<<invoke(f1, 1, 2)<<endl;cout<<invoke(f2, 1, 2)<<endl;cout<<invoke(F::f3, F(), 1, 2)<<endl;return 0;
}运行程序输出
3
3
3

可以看到通过invoke,调用普通函数与成员函数在形式上是一致的了。

另外需要说明的是invoke还支持对类虚函数的多态调用:

#include <iostream>
#include <functional>
using namespace std;class B{
public:virtual int add(int a, int b) {cout<<"in B"<<endl;return a + b;}
};class D 

更多推荐

C++(17):invoke

本文发布于:2023-11-15 09:11:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1597225.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:invoke

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!