假设我定义、实例化和使用加法器仿函数,如下所示:
class SomeAdder {
public:
SomeAdder(int init_x): x(init_x) {}
void operator()(int num) { cout << x + num <<endl; }
private:
int x;
};
SomeAdder a = SomeAdder (3);
a(5); //Prints 8
SomeAdder b(5);
b(5); //Prints 10
构造函数和重载()
运算符都使用双括号调用并且具有相同类型的参数。编译器如何确定在实例化和“函数调用”期间使用哪个函数SomeAdder
,以实现正确的行为?答案似乎在表面上很明显,但我就是无法理解这个想法。
谢谢你的时间!