Что такое функциональный объект? Кто может с ходу дать определение? Я тоже не могу, для меня это новое понятие, поэтому я и создаю новый пост под эту тему, именно под эту тему, в общем господа давайте думать.
Я уже смотрел и знаю что это такое, функциональный объект это вроде как класс у которого перегружен оператор () operator()() перегружен. Щас еще в книге глянем определение. Объекты классов, перегружающие операцию вызова (операцию() ), называются объектами-функциями или функциональными объектами (finction-like objects или functions objects), а также функторами (functors). Это дословное определение.
Чем же функциональные объекты лучше функций? Да тем что объект может сохранять свое состояние, от например можно подсчитать сумму всех чисел используя функциональный пример, щас примерчик приведу.
Да токо пытался создать примерчик, да ничерта он не заработал как нада, пока проедим тему. А не заработал, потому что я забыл принять объект, не забывайте принимать объект.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include <iostream> using std::cout; using std::endl; #include <vector> using std::vector; #include <algorithm> using std::for_each; //функциональный объект struct obj { int sum; obj(int i=0):sum(i){}//конструктор по умолчанию void operator()(int i){sum+=i;/*cout <<i<<' '<<sum<<endl;*/}//накопление }; int main() { vector<int> v; //заполняем вектор for(int i=0;i<10;i++) v.push_back(i); //подсчитываем количество элементов в векторе obj s;//создаем функциональный объект //возвращает объект, не забываем принять объект как я сразу :) s=for_each(v.begin(),v.end(),s); //выводим результат cout <<"s.sum= "<<s.sum<<endl; return 0; } |
Что еще добавить? На этом пока что остановимся.
[youtube]http://www.youtube.com/watch?v=Nyn8VppJfmc[/youtube]