std::function常见的几种用法
运行结果:
代码示例:
#include<iostream>
#include<functional>
#include<string>
class FOO {
public:
void operator()(int i) {
std::cout << "print i=" << i << std::endl;
}
void print_add(int i) const { std::cout << "print i="<<i << std::endl; }
void print_add_1() const { std::cout << "print i=10"<< std::endl; }
int number=10;
};
void print(int number) {
std::cout << "print number=" << number << std::endl;
}
int main() {
//1.运算符重载
FOO foo;
foo(10);
//2.访问类的成员函数
std::function<void(FOO&,int i)>fun1 = &FOO::print_add;
FOO foo_1;
fun1(foo_1,10);
//3.访问类的成员函数
std::function<void(FOO&)>fun2 = &FOO::print_add_1;
fun2(foo_1);
//4.访问局部函数
std::function<void(int)>fun3 = print;
fun3(10);
//5.访问成员变量
std::function<int(FOO&)>fun4 = &FOO::number;
std::cout<<"num="<<fun4(foo)<<std::endl;
//6.访问Lambda表达式
std::function<void(int)>fun5 = [=](int value){ std::cout << "print value=" << value << std::endl; };
fun5(10);
return 0;
}