Константные операторы C++, почему и зачем? [дубликат]

257
23 июня 2017, 09:06

На данный вопрос уже ответили:

  • Константные методы 7 ответов

Здравствуйте. В C++ есть понятие функтора и предиката. Когда я эти понятия изучал, я столкнулся с константными операторами.

Есть строка типа:

int operator()(int arg) const

И строка типа:

int operator()(int arg)

Обе эти строки просто объявляют оператор, который для каждого arg возвращает arg + 1.

Для строки transform(a.begin(), a.end(), a.begin(), Comp()); оба объявления работают одинаково хорошо. Всё компилируется и все элементы в векторе и правда увеличиваются на 1

Так в чём же разница между обьявлением с const, и без него?

Answer 1

Константные операторы, и вообще константные функции, нужны чтобы их можно было вызвать у константного объекта, через константную ссылку или указатель на объект.
Например для const Comp c; или const Comp&.

READ ALSO
Добавить ID переключателя в href по клику

Добавить ID переключателя в href по клику

Добавляю в href ИД переключателя по клику, но при каждом нажатии на переключатель, ИД добавляется снова и снова, а нужно только один, попробовал...

275
jqery загрузчик фото (изменить ссылку)

jqery загрузчик фото (изменить ссылку)

Подскажите, пжлст, как изменить вид ссылки? Имеется загрузчик который подгружает налету изображенияПроблема состоит в том, что он исполняется...

294
jquery, добавить класс по клику

jquery, добавить класс по клику

Добрый вечерРебят, помогите пожалуйста

355
Калькулятор цен с

Калькулятор цен с

С помощью <input type=range> задаем количество товараЦена единицы товара, перечисленная в массиве tariff[75,70,66,62,58,55] колеблется в зависимости от количества,...

326