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è)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為樂陵等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
#include <iostream>
#include <memory>
#include <functional>
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ù)是通過值拷貝的方式進(jìn)行參數(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進(jìn)行引用傳遞參數(shù),如:
auto func3 = bind(&TesSt::update, std::ref(g_test_st), "hihi");
這樣func3調(diào)用時更新的是g_test_st的引用內(nèi)容,并不是副本。
網(wǎng)站名稱:C++stl庫bind函數(shù)模板用法的注意事項
轉(zhuǎn)載來源:http://jinyejixie.com/article26/iepicg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、定制網(wǎng)站、網(wǎng)站設(shè)計公司、、域名注冊、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)