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


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值