Function Call

The function-call operator, invoked using parentheses, is a binary operator. The syntax for a function call is:

Syntax

primary-expression ( expression-listopt )

In this context, primary-expression is the first operand and expression-list, a possibly empty list of arguments, is the second operand. The function-call operator is used for operations that require a number of parameters. This works because expression-list is a list instead of a single operand. The function-call operator must be a nonstatic member function.

The function-call operator, when overloaded, does not modify how functions are called; rather, it modifies how the operator is to be interpreted when applied to objects of a given class type. For example, the following code would usually be meaningless:

Point pt;

pt( 3, 2 );

Given an appropriate overloaded function-call operator, however, this syntax can be used to offset the x coordinate 3 units and the y coordinate 2 units. The following code shows such a definition:

class Point

{

public:

Point() { _x = _y = 0; }

Point &operator()( int dx, int dy )

{ _x += dx; _y += dy; return *this; }

private:

int _x, _y;

};

...

Point pt;

pt( 3, 2 );

Note that the function-call operator is applied to the name of an object, not the name of a function.