zoukankan      html  css  js  c++  java
  • C++bind函数

    bind函数看做一个通用的函数适配器,它接受一个可调用函数,生成一个新的可调用函数

    它可以把原可调用函数的某些参数预先绑定到给定的变量中,然后产生一个新的可调用函数

    在c语言中, 回调函数的实现往往通过函数指针来实现。 但是在c++中 , 如果回调函数是一个类的成员函数。这时想把成员函数设置给一个回调函数指针往往是不行的,因为类的成员函数,多了一个隐含的参数this。 所以直接赋值给函数指针肯定会引起编译报错

    普通函数

    #include <iostream>
    #include <functional>
    
    void fun1(int n1, int n2, int n3)
    {
        std::cout << n1 << " " << n2 << " " << n3 << std::endl;
    }
    
    int main()
    {
        //原fun1接受三个参数,其中绑定了2个,第三个参数由新的可调用对象指定  
        auto f1 = bind(fun1, 11, 22, std::placeholders::_1); 
        // std::placeholders::_1 表示这个位置的参数由新对象指定,相对于新对象中的第一个参数 
        f1(33);                                                                                                                
    }

    类成员函数

    #include <iostream>
    #include <functional>
    using namespace std::placeholders;
    
    class A
    {
    public:
        void print(int n1, int n2, int n3)
        {
            std::cout << n1 << " " << n2 << " " << n3 << std::endl;
        }
    };
    
    
    int main()                                                                                                                                   
    {
        A a;
        //类成员函数需要绑定该类的this指针  
        auto f1 = bind(&A::print, &a, _2, 22, _1);
        f1(44,55);
    }

  • 相关阅读:
    MySQL——索引
    MySQL——逻辑分层与存储引擎
    APP测试总结
    如何提高测试的质量
    测试用例的基础
    opencv图像处理常用操作一
    【bug】【Cannot find reference 'imread' in '__init__.py | __init__.py'】
    Numpy学习笔记
    工业互联网
    Python基本的数据清洗
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13557619.html
Copyright © 2011-2022 走看看