zoukankan      html  css  js  c++  java
  • duilib框架分析:几个回调(C++11)

    里面涉及的几个回调还比较有用处,记录一下用做练手
    主要还是一个原理:函数和方法基本是相似的,区别仅仅在于方法可能带有一个状态(对象拥有的成员变量),在C++11中使用std::function将调用统一

    typedef std::function<void(const std::string&)> Callback;
    class A {
    public:
        virtual void Create(const std::string &str) { std::cout << "default create" << std::endl; }
    };
    class B :public A {
    public:
        //虚方法重写
        virtual void Create(const std::string &str) { std::cout << str << std::endl; }
    };
    
    void Builder(const std::string &name, Callback cb = Callback()) {
        //...先根据其它条件创建
        //...如果都不满足且有回调的情况,执行回调创建
    
        if (cb) {
            cb(name);
        }
    
        //或者:cb也可以和NULL进行比较
        //if (cb != NULL) {
        //    cb(name);
        //}
    }
    int main()
    {
        auto b = new B();
        auto cb = std::bind(&A::Create, b, std::placeholders::_1);
        Builder("box",cb);//"box"
        Builder("label",cb);//"label"
    
        Builder("vbox", Callback());
    }
  • 相关阅读:
    抉择
    PHP glob() 函数
    PHP之关闭网页错误提示
    PHP htmlentities() 函数
    PHP mysql_real_escape_string() 函数
    LFI & RFI & PHP封装协议之安全问题研究
    数据公钥加密和认证中的私钥公钥
    RSA算法
    APT攻防对抗
    安全参考
  • 原文地址:https://www.cnblogs.com/tinaluo/p/14394884.html
Copyright © 2011-2022 走看看