我有一个函数对象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;
};
一对相似的 call 操作符用于here。问题是:我是否需要第4行?在第4行定义的运算符是否会被调用?在以下情况下:
A a(7);
a() = 8;
cout << a() << endl;
总是会调用第5行的运算符(operator)。
最佳答案
是的,将使用第4行,例如:
A a(3);
const A b(2);
a(); // from line 5
b(); // from line 4