Страницы

Поиск по вопросам

понедельник, 15 апреля 2019 г.

Синтаксис классов/структур c++

Имеется такой класс для, например, вывода вектора через библиотеку algorithm. Объясните по какому принципу myobject работает в коде и что это вообще такое?
struct myclass { void operator() (int i) {std::cout << ' ' << i;} } myobject;
for_each (myvector.begin(), myvector.end(), myobject);


Ответ

Шаблонная функция std::for_each внутри себя пробегает в цикле по всему диапазону итераторов, который вы ей передали: от myvector.begin() до myvector.end() и для каждого итератора it в этом диапазоне выполняет следующее выражение
myobject(*it) Компилятор видит, что myobject - это не функция, а экземпляр некоего класса myclass. В такой ситуации компилятор расценивает выражение myobject(*it) как вызов
myobject.operator()(*it)
А это и есть вызов вашего метода класса с аргументом *it, т.е. с очередным значением из вектора.

Комментариев нет:

Отправить комментарий