里面涉及的几个回调还比较有用处,记录一下用做练手
主要还是一个原理:函数和方法基本是相似的,区别仅仅在于方法可能带有一个状态(对象拥有的成员变量),在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()); }