C++11 里面有很多非常方便的标准类,令我感到,C++的功能越来越像JAVAl了,甚至说,越来越像脚本语言了。
其中,有thread,bind,function 三个功能我觉得最为有用,有趣。(当然,跟thread相关的还有mutex一类的东西)
bind可以强制的将各种各样的接口提前绑定好参数,然后返回一个我们规定的接口,传到任何地方,然后运行!
这个是多么的方便!!!简直让我感到编程是幸福的!!
thread,这个类直接提供了一个编译器支持的线程,只要用它,你的线程代码,就可以跨平台!!因为编译器的支持,它的效率应该不会太差!!
不知道C++标准的制定者,早点为啥不出这个东西。
最后function,这个东西,其实是和bind配合使用的(再加上lambda方法)构成了C++新标准的完美回调使用。
以前在使用STD标准的算法的时候,你是否感觉 find_if()最后一个参数,居然还要传一个函数,你妈妈的,我还需要在外面建立一个静态的函数,这不是逗比么?
出现了lambda之后,一切都不同了。这个bind我再慢慢说。
QT有个信号和槽,它归根结底,是编译了两遍,自己还有自己内部的观察者(其实就是自己的内核)支持,bind这东西一出,我感觉可以媲美QT的信号和槽。(因为它可能在方便上不如QT但是因为编译器的支持,效率!而且使用的时候不用任何依赖!)
假如我规定某种接口:
typedef function<void()> TypeFunc;
这样就像是一个自己定义的信号!
然后我们发现有一个接口:
void testFunc(int a, const string &str, doubli d);
然后我们: TypeFunc myFunc = bind(&testFunc, 某个int变量,某个string变量,某个double变量);
然后那个myFunc就可以留着了,什么时候用都行!
这样的意义在于,我们在类里面封装的东西简单,只需要在外部Bind好传进来就好!
我只能说,这功能简直太变态了。
因为bind甚至可以仅仅绑定某几个变量值,甚至顺序,留几个空位以后用!!!
以往的C++代码,多态的复杂性,会使得层次越来越深,当我们回顾代码的时候,那一层层的逻辑,让人崩溃。
QT使用信号和槽,使得代码的逻辑变得简单!赞一个!
现在C++11的bind,或许可以使得C++的代码,逻辑像C一样层次鲜明,封装像C++一样强大!
仅仅我一点点小小的观点!以后慢慢验证!