std::bind绑定类的成员函数

  • Post author:
  • Post category:c++
  • Post comments:0评论

当然,std::bind除了绑定函数外,还可以绑定类的成员函数。下面是一个绑定类成员函数的例子:

#include <functional>
#include <iostream>

class A {
public:
    A() : m_x(0) {}
    void setX(int x) { m_x = x; }
    int getX() const { return m_x; }
private:
    int m_x;
};

int main() {
    A obj;

    auto fn1 = std::bind(&A::setX, &obj, 10);
    fn1();

    auto fn2 = std::bind(&A::getX, &obj);
    std::cout << "getX() returns " << fn2() << std::endl;

    return 0;
}

在这个例子中,我们首先定义了类 A,其中有一个成员变量 m_x 和两个成员函数 setXgetX。然后我们创建了一个 A 类型的对象 obj

接着我们创建了一个名为 fn1 的可调用对象,将 setX 函数和 obj 绑定在一起,并将参数 10 绑定为 setX 的第一个参数,这样 fn1() 就等同于调用 obj.setX(10)

接下来,我们创建了另一个名为 fn2 的可调用对象,将 getX 函数和 obj 绑定在一起,这样 fn2() 就等同于调用 obj.getX()

最后,我们输出了 fn2() 的返回值。

通过以上代码,我们可以看到用std::bind 简化了语法,可以非常方便地在类的成员函数中使用 std::bind 来绑定对象指针和成员函数,生成新的可调用对象,这样就可以在以后更加方便地调用了。

文章作者: 张拓
文章链接: http://www.xssl.online/stdbind%e7%bb%91%e5%ae%9a%e7%b1%bb%e7%9a%84%e6%88%90%e5%91%98%e5%87%bd%e6%95%b0/
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客
浏览次数: 872

张拓

陕西西安蓝田张拓QQ1070410059。一生所求不过“心安”二字。 然,尘世多纷扰。

发表回复