我有一个函数对象A,其中包含一对函数调用运算符(第4行和第5行):
class A{
public:
A(int x) : _x(x){}
int operator () () const { return _x; } // line 4
int & operator () () { return _x; } // line 5
private:
int _x;
};
这里使用了类似的调用运算符,可以在这里查看。问题是:我是否需要第4行?定义在第4行的运算符会被调用吗?在以下情况下:
A a(7);
a() = 8;
cout << a() << endl;
总是会调用第5行的操作符。