Я новичок в функторе. Может ли кто-нибудь объяснить мне в следующих кодах, когда программа создает объекты для класса AddValue для каждого элемента вектора? Для меня функция for_each() должна сначала получить элемент из vec, а затем создать новый объект AddVal, используя это значение (obj.i=value), а затем вызвать функтор AddVal(20), чтобы добавить 20 к i. и распечатать его. Но я не видел, где происходит процесс создания новых объектов. Спасибо.
#include<iostream>
#include<vector>
#include<algorithm>
class AddVal{
public:
int i;
AddVal(int x) : i(x) {}
void operator () (int val) {std::cout << val+i << std::endl;}
};
int main()
{
std::vector<int> vec = {1,2,3,4,5};
for_each(vec.begin(),vec.end(),AddVal(20));
}