当前位置:C++技术网 > 资讯 > STL中的函数符--operator重载操作符

STL中的函数符--operator重载操作符

更新时间:2016-04-27 12:01:59浏览次数:1+次

operator()函数是函数调用操作符!在STL中的各种functor都是通过重载他来实现的。对于operator,我刚开始是在理解不来,不管其他了,先看个代码吧:
#include "iostream"
#include "windows.h"

class Function
{
int y;
public:
Function(int x): y(x){};

public:
double operator()(double x) 
{  
return x+2*y;
} 

};

int main()
{
using namespace std;

Function myFunc(1);

cout<<myFunc(2.0)<<endl;

system("pause");
}
刚刚开始的时候,我就只有一个困惑,如果,我大一下学期写的C++基础——类的知识还在的话,那么,当我们定义完一个类的对象实例后,首先在类的定义中执行的是构造函数,而后,我们利用这个对象实例调用类中的函数....而后,在上面的代码中,我们就定义了一个类的对象实例,并传入一个参数,而后再重新传入一个参数就能在类的实现定义中调用operator()函数了,你可以断点调试走一遍代码的执行路径。其实上面的疑惑可以用这么一句话来解释——重载的函数操作符,对对象使用起来就像对象是一个函数一样。
最后看看上面的实现: