На данный вопрос уже ответили:
Здравствуйте. В C++ есть понятие функтора и предиката. Когда я эти понятия изучал, я столкнулся с константными операторами.
Есть строка типа:
int operator()(int arg) const
И строка типа:
int operator()(int arg)
Обе эти строки просто объявляют оператор, который для каждого arg возвращает arg + 1.
Для строки transform(a.begin(), a.end(), a.begin(), Comp()); оба объявления работают одинаково хорошо. Всё компилируется и все элементы в векторе и правда увеличиваются на 1
Так в чём же разница между обьявлением с const, и без него?
Константные операторы, и вообще константные функции, нужны чтобы их можно было вызвать у константного объекта, через константную ссылку или указатель на объект.
Например для const Comp c; или const Comp&.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей