Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Функциональный объект.

Posted on 10 июля, 201310 июля, 2013 by admin

Что такое функциональный объект? Кто может с ходу дать определение? Я тоже не могу, для меня это новое понятие, поэтому я и создаю новый пост под эту тему, именно под эту тему, в общем господа давайте думать.

Я уже смотрел и знаю что это такое, функциональный объект это вроде как класс у которого перегружен оператор ()  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]

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
  • Татьяна к записи Как удалить изображение из google
©2021 Kselax.ru Theme by ThemeGiant