本文转自:http://liuyue.asia/2010/03/18/cpp0x-has-become-cpp1x/程序员
一个热爱 C++ 的程序员应该知道 C++0x 为什么物吧。C++ 标准制定委员会曾在 1998 年和 2003 年制定和更新了 C++ 的标准,使 C++ 的编写更规范,功能也获得了提高。可是每次标准的制定后,委员会都会想着下一代的标准,C++ 的下一代就是 C++0x.正则表达式
可是现在,C++0x 已然被拖成 C++1x. 这是很明显的,如今已是 2010 了。最新的消息是,C++1x 会在 2010年底最终制定完成,但因为委员会还有一些问题要解决,该标准预计能在 2011 年成为正式标准,通俗地说就是成为 C++11, 说玄乎些也就是 ISO/IEC 14882:2011.编程
我想你们最感兴趣的是新标准里有些什么。因为这些标准大多数都是外国人定的,有关它的中文信息少之又少,国内对标准的制定也不是颇有兴趣,网上见到的文章说的都是 200x 年的预测了,这些预测现在看来也没有多少应验的。目前我忙于准备高考,高考完后我想写一本有关新标准的书。编码
我认为,采用了新标准的 C++ 在运行效率上会相似 C, 在编写效率上将直逼 Java. 你能够和我争辩这个问题,我只想告诉你,C++ 的爹地说,争议最多的语言正是最流行的语言。我认为在提升编码效率时牺牲点运行效率是值得的。事实上,C++ 的机制也容许你不使用新特性,若是你是个保守的程序员,你能够把代码写得和 C 同样而彻底兼容于新标准。再说,新特性也是一些很成熟、甚至已经成为某种标准的东西,好比 RegEx, 因此我很是支持新标准的出台。让咱们对 C++11 充满期待吧。spa
Boost 是 C++ 的准标准库。此话怎讲呢?首先这是由 C++ 标准委员会开发维护的。而后,这必定程度上体现了 C++ 程序员的民意,不少来不及加入新标准的你们又期待的特性就被那些 geeks 加入了 Boost. 咱们能够先睹为快:http://boost.org/ .code
RegEx 就是正则表达式。传说 C++1x 会把正则表达式添加到标准库中。正则表达式是现在不少高级语言都支持的东西,好比 PHP, Java, C# 等,而且应用很是的普遍。ci
正则表达式是用来干吗的呢?它是用来匹配、查找或替换字符串的。什么是匹配?匹配就是判断一个字符串是否符合某种要求。什么是查找?查找就是找到字符串中的某个符合要求的子串。什么是替换?替换就是将字符串中的某个子串替换成另一个子串。你可能会说:“那 Word 的查找和替换是否是可以作到这一点呢?” Word 固然能够作到查找和替换,可是它只能查找固定的子串,只能替换成固定的子串:“能够帮我把猪换成狗吗?”然而正则表达式可以迅速知足你这样的要求:“能够帮我把中括号扩起来的内容当成电子邮件的用户名,而后把中括号去掉再加上 @liuyue.asia 吗?”开发
传言说 C++ 拟在 C++1x 中升级泛型的支持。泛型是什么呢?其实泛型在 C++03 中称为模板,没错,就是 template<typename T> 之类的东西。字符串
因为 C++ 标准号称向下兼容,向下兼容的意思是,之前是对的东西,如今还会是对的;可是之前是错的东西,如今可能支持了。因此,C++1x 会在这方面显得更加随便。get
说到这里,可能有些人已经激动不已了。个人编程是从 Visual Basic 起步的,当我得知这个特性时,我想:“难道 C++ 真的要变成 Visual Basic 了吗?是否是 C++ 与 Visual Basic 的区别,仅仅是 Option Explicit 了呢?”
固然 C++ 不可能变成 Visual Basic. 不过可变数据类型的确算是一个革命性的特性。确定会有人认为,这会增大运行开销,可是请想想,你彻底可使用 C++03 的代码,在 C++1x 的标准下,编译出与原来同样效率的程序。
鸡冻的同窗们,请看代码。
int my_array[5] = {1, 2, 3, 4, 5}; for(int & x : my_array) { x *= 2; }
这就是集合内的 for 循环,不久将被 C++1x 支持。
其实 C++ 还有不少特性有待更新,这里只是列举出了传言中的一点点。国内关注标准的人真的很少,我但愿国人可以多多关注这些,甚至参与到国际标准的制定中去。
最后说明一点,本文内容多为传言,不保证真实性。可是能够肯定的是,C++1x 将在不久的未来发布,而且成为新的 C++ 标准。