群上一网友贴了一段类似仿函数用法,问大家什么意思。如下:
大家说了一通,结果提问人说代码错了,氛围有点尴尬。。。哈哈。笑完之后,借着这个机会整理下。
1)仿函数定义
仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。
2)实现例子
#include <iostream>
using namespace std;
class Time
{
public:
//小括号重载 版本0
void operator()()
{
cout<< "version 0"<<endl;
}
//小括号重载 版本1
void operator()(int h)
{
cout<< "version 1"<<endl;
}
//小括号重载 版本2
void operator()(int h, int m)
{
cout<< "version 2"<<endl;
}
};
int main()
{
Time t;
t();
t(1); //小括号重载 版本1
t(1,1); //小括号重载 版本2
return 0;
}
跟提问网友贴的代码还是有点不一样的,仿函数的操作对象是类对象,而不是类指针,提问网友贴的代码是this指针。后面还看到有人说是重载了运算符->,但是重载operator ->目的是为了使一个类对象表现的像一个类型的指针一样,显然这里this已经是指针了,所以也不存在这种可能
参考:
https://blog.csdn.net/tianshuai1111/article/details/7687983
https://blog.csdn.net/todototry/article/details/1481185