函数调用运算符重载

语法

函数调用运算符operator()是一个二元运算符,语法如下:

primary-expression ( expression-list )
  • primary-expression是第一个操作数
  • expression-list是第二个操作数,有可能为空的参数列表

注意 1:函数调用运算符重载必须是非静态成员函数

注意 2:函数调用运算符是应用于对象,而不是函数

示例

定义类Point,重定义函数调用运算符

class Point {
public:
    Point() { _x = _y = 0; }

    Point &operator()(int dx, int dy) {
        _x += dx;
        _y += dy;
        return *this;
    }

    inline void print() {
        cout << "_x = " << _x << " _y = " << _y << endl;
    }

private:
    int _x, _y;
};

int main() {
    Point pt;

    pt.print();
    pt(3, 2);
    pt.print();
}