станд :: Bind ()
Std :: связывает в основном используется для связывания для формирования целевой функции, как правило , используется для генерации функции обратного вызова, Cocos ROLLBACK функции по станду :: свяжи и станд :: функция для достижения. Для того, чтобы понять два момента:
1. Связывание функции глобального или статических переменный меньше связывающие члены функции - члена, и не требует следующих ссылки
// связывающей глобальной функции
Auto STD :: = pFunc привязки (func1 ,. 3);
/ / связывающийся статическая функция
pFunc = станд :: привязка (Func :: func6, 3);
// связать перед тем функции члена класса, необходимо добавить ссылку функцию, мульти-переменной параметра Fuc
Func FUNC;
pFunc = зЬй :: привязать (& Func func2 ::, FUNC ,. 3);
2. заполнитель станд :: заполнители :: _ 1 в настоящем описании , представляют входные параметры, а также параметры в первом ряду, анализ код более очевидной
#include <The iostream>
#include < Функциональное> с
использованием имен STD;
класс Func
{
общественности:
статической силы Func6 (NUMA INT, INT Numb, внутр NUMC)
{
станд :: соиЬ << NUMA << "" << онемели << "" << NUMC << епсИ;
}
Недействительным func2 (интермедиат NUMA, внутр онемела, внутр NUMC, StD :: строка имя)
{
зЬй :: COUT << NUMA << "" << онемели << "" << NUMC <<»" << имя << ENDL;
}
}
Пустота callFunc (станд :: Функция <аннулируются (Int А, Int б)> вызов)
{
вызова (1,2);
}
Недействительным func1 (интермедиат NUMA, внутр онемела, внутр NUMC)
{
станд :: соиЬ << NUMA << "" << онемели << "" << NUMC << епсИ;
callFunc (станд :: Bind (func1, STD :: заполнители :: _ 2, станд :: заполнители :: _ 1, 3));
callFunc (станд :: Bind (func1, STD :: заполнители :: _ 2, 3, станд :: заполнители :: _ 1));
callFunc (станд :: Bind (Func :: func6, STD :: заполнители :: _ 1, станд :: заполнители :: _ 2, 3));
callFunc (Std :: Bind (& Func :: func2, функ, STD :: заполнителей :: _ 1, станд :: заполнители :: _ 2, 3, "название"));
}
运行结果如下
:: Функция станд
станд :: функция равна указателю функции, указатель функции проще в использовании по сравнению с, запишите его несколько применений: в глобальной или статической функции, функции - члены класса, лямбда - выражений и функций моделирования. Точка для глобальных функций или использование станд :: функции <ничтожной ()> статические функции testFunc = FUNC3, точки к функции - члена класса, переменные - члены должны развивать класс функция принадлежит testFunc = зЬй :: Bind (& Func :: func2, FUNC, 1, 2, 3, "название "). Код выглядит следующим образом :
#include <iostream>
#include <String>
#include <iostream>
#include <Functional>
от употребления имен STD;
класс Func
{
общественности:
INT SUM;
Func ()
{
SUM = 2;
}
недействительным func2 (интермедиат NUMA, Numb INT, INT NUMC, имя STD :: String)
{
STD :: COUT NUMA << << "" << << Numb "
}
Недействительным func4 ()
{
станд :: соиЬ << "func4" << епсИ;
}
Аннулируются оператор () (Int А, внутр б)
{
зЬй :: COUT << "Оператор:" << сумму << " "<< а <<"" << B << Endl;
}
Статической силы func6 (интермедиат NUMA, внутр онемела, внутр NUMC)
{
станд :: соиЬ << NUMA << "" << онемели << "" << NUMC << епсИ;
}
Статической силы func5 ()
{
станд :: соиЬ << "статического FUNC" << епсИ;
}
};
недействительный callFunc (станд :: Функция <аннулируется (Int А, Int б)> вызов)
{
вызов (1,2);
}
Недействительные FUNC3 ()
testFunc = станд :: Bind (& Func :: func2, FUNC, 1, 2, 3, "название"); testFunc ();
// Lambda表达式
станд :: соиЬ << "Лямбда表达式" << епсИ;
testFunc = [=, & resultInt] () {станд :: соиЬ << сумма << епсИ; resultInt + = 100; };
testFunc ();
соиЬ << "reslutInt является" << resultInt << епсИ;
//仿函数
станд :: соиЬ << "仿函数" << епсИ;
станд :: Функция <аннулируются (Int А, Int б)> abFunc = FUNC;
abFunc (10, 20);
станд :: соиЬ << resultInt << станд :: епсИ;
}