Функторы и матричная индексация , насколько мне известно, наиболее распространенные случаи использования.
Матричная индексация
Для матричного класса вы можете сделатьчто-то вроде этого:
Matrix3x3 A;
A(1,2) = 2;
Основная причина использования скобок вместо скобок в этом случае заключается в том, что оператор скобок принимает только один аргумент, а оператор скобок принимает несколько аргументов.
Функтор
Если вы хотите, чтобы объект действовал как функция, которая также может хранить информацию, вы можете сделать:
Accumulator accumulate;
for(int i=0; i<20; ++i)
accumulate(i);
std::cout << accumulate.sum << std::endl;
В C ++ вы также часто встречаете функторы для объекты сравнения , даже если они не хранят информацию.