1、函数对象、 函数调用运算符()
如果类中重载圆括号,那就可以像使用函数一样使用该类对象。
#include<iostream>
using namespace std;
class ReturnValue{
public:
ReturnValue(){}
ReturnValue(int v){cout<<v<<endl;}//有参构造
void operator()(int value)const{
cout<<value<<endl;
}
};
int main(){
#if 0
//这是调用默认构造函数,初始化对象
ReturnValue r;
r(13);//对象加上括号
#endif
ReturnValue r(23);//嗲用有参构造初始化,注意这里的括号不是函数对象,而是有参构造
r(13);//这里才是可调用对象
return 0;
}
2、函数指针
//定义一个函数
int show(int value){
return value;
}
//用一个函数指针指向函数
int(*p)(int);
p=show();
//这样就可以用指针变量去调用函数
int result=p(10);
cout<<result<<endl;
3、function类型介绍
function<int(int)> f1=show;//相当于一个函数指针
int r=f1(21);
cout<<r<<endl;
//函数指针做容器类型的参数
map<string,function<int(int)>> m_ap;
m_map.insert({"1",show});
//容器模板函数的调用方式
cout<<m_map["1"](15)<<endl;