C++仿函数和()运算符重载

群上一网友贴了一段类似仿函数用法,问大家什么意思。如下:


大家说了一通,结果提问人说代码错了,氛围有点尴尬。。。哈哈。笑完之后,借着这个机会整理下。

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


猜你喜欢

转载自blog.csdn.net/idwtwt/article/details/80331728
今日推荐