关于仿函数中operator()的疑问解决思路
关于仿函数中operator()的疑问
有资料说:“如果想让一个类的对象具有函数行为,就必须让它有可能被“调用”——通过小括号的运用和参数传递,因此只需要定义operator(),并给予合适的参数类别就可以了”
疑问是:operator()函数是什么?作用又是什么?不会是操作符重载吧?
------解决方案--------------------
额,我只知道重载,还有别的作用吗?
------解决方案--------------------
原因很简单,为了与普通函数兼容:
class A;
A a;
a(); //这里和调用普通函数在写法上一致
这样达到什么目的的,比如std::find函数,它既可接受一个函数,也能接受一个对象(当然得有仿函数功能的对象)
------解决方案--------------------
你是从哪看来的
有什么其他的上下文环境么
说的是不是重载()操作符啊
------解决方案--------------------
看看()的所有方式你可能就会知道吧
不同操作符作用方式不同
简单说()操作符就是对左边的操作数作用的
而且操作数只有一个
------解决方案--------------------
上下文环境?
------解决方案--------------------
因为STL里约定了用_Pred p; p()这种形式。所以只需要重载operator()
有资料说:“如果想让一个类的对象具有函数行为,就必须让它有可能被“调用”——通过小括号的运用和参数传递,因此只需要定义operator(),并给予合适的参数类别就可以了”
疑问是:operator()函数是什么?作用又是什么?不会是操作符重载吧?
------解决方案--------------------
额,我只知道重载,还有别的作用吗?
------解决方案--------------------
原因很简单,为了与普通函数兼容:
class A;
A a;
a(); //这里和调用普通函数在写法上一致
这样达到什么目的的,比如std::find函数,它既可接受一个函数,也能接受一个对象(当然得有仿函数功能的对象)
------解决方案--------------------
你是从哪看来的
有什么其他的上下文环境么
说的是不是重载()操作符啊
------解决方案--------------------
看看()的所有方式你可能就会知道吧
不同操作符作用方式不同
简单说()操作符就是对左边的操作数作用的
而且操作数只有一个
------解决方案--------------------
上下文环境?
------解决方案--------------------
因为STL里约定了用_Pred p; p()这种形式。所以只需要重载operator()