Класс, в котором переопределен оператор вызова функции, называется функциональным классом. У такого класса не требуется наличие других полей и методов.
Пример 1

class if_greater
{
public
int operator() (int a, int b) const { return a>b; }
};

Объект данного функционального класса используется так, как если бы он был функцией.
Пример 2

if_greater x;
cout<< x(1, 5)<< endl; /* 0 */
cout<< if_greater() (5, 1)<< endl; /* 1 */

Поскольку в классе определена операция вызова функции с двумя аргументами, то выражение x(1, 5) является допустимым, или это можно записать так:
Пример 3

*operator()(1, 5)
А во втором операторе вызова функции if_greater используется для вызова конструктор по умолчанию класса if_greater.
Как и в предыдущем случае для этого объекта вызывается функция с двумя аргументами, записанными в круглые скобки. Операцию круглые скобки можно определить только как метод класса. Можно определить перегруженные операции вызова функции с разным количеством аргументов.