(三)使用bind生成类的成员函数的可调用对象

1. C++

  • std::function
  • std::bind
  • std::shared_ptr
  • std::vector

2. demo

#include <iostream>
#include <string>
#include <functional>
#include <memory>
#include <vector>
using namespace std;

class Info{
public:
    void SetName(const string &strName){
        name = strName;
    }
    string GetName(){
        return name;
    }

private:
    string name;
};

void bind_test()
{
    shared_ptr<Info> b = make_shared<Info>();
    b->SetName("jim");
    cout << b->GetName() << endl;

    vector<shared_ptr<Info>> vecInfo;
    function<string(void)> fn = bind(&Info::GetName, b);
    vecInfo.push_back(b);

    for (auto iter : vecInfo){
        cout << iter->GetName() << endl;
    }
}

int main()
{
    bind_test();
    return 0;
}

3. 用途

绑定的函数可用于观察者模式的被调用对象。

posted @ 2018-06-04 16:54  yvhqbat  阅读(2046)  评论(0编辑  收藏  举报