bind可以包裝類成員函數(shù),創(chuàng)建函數(shù)對象。其中有接收類類型和類指針類型的版本,如:
創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、樂陵網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為樂陵等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
#include
#include
#include
using namespace std;
struct TesSt {
TesSt()
{}
void update(const string &in_str) {
str = in_str;
cout << "str:" << str << endl;;
}
string str;
};
TesSt g_test_st;
int main () {
auto func1 = bind(&TesSt::update, &g_test_st, "hihi");
auto func2 = bind(TesSt::update, &g_test_st, "hihi");
auto func3 = bind(&TesSt::update, g_test_st, "hihi");
auto func4 = bind(TesSt::update, g_test_st, "hihi");
return 0;
}
如果不做任何處理的話,bind函數(shù)是通過值拷貝的方式進行參數(shù)傳遞。也就是說,func1、func2是經(jīng)過被拷貝的類指針構(gòu)造,調(diào)用會更新g_test_st內(nèi)容;func3、func4是值拷貝構(gòu)造,調(diào)用時更新的是g_test_st的副本,不會影響原來的類變量。
另外,可以通過std::ref,使bind進行引用傳遞參數(shù),如:
auto func3 = bind(&TesSt::update, std::ref(g_test_st), "hihi");
這樣func3調(diào)用時更新的是g_test_st的引用內(nèi)容,并不是副本。