C++0x 已然拖成 C++1x

小编辑 发布于 2010/05/12 08:49
阅读 1K+
收藏 0
GCC

一个热爱 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 充满期待吧。

C++ 的准标准库 Boost

Boost 是 C++ 的准标准库。此话怎讲呢?首先这是由 C++ 标准委员会开发维护的。然后,这一定程度上体现了 C++ 程序员的民意,很多来不及加入新标准的大家又期待的特性就被那些 geeks 加入了 Boost. 我们可以先睹为快:http://boost.org/ .

新特性之 RegEx

RegEx 就是正则表达式。传说 C++1x 会把正则表达式添加到标准库中。www.linuxidc.com正则表达式是如今很多高级语言都支持的东西,比如 PHP, Java, C# 等,并且应用非常的广泛。

正则表达式是用来干嘛的呢?它是用来匹配、查找或替换字符串的。什么是匹配?匹配就是判断一个字符串是否符合某种要求。什么是查找?查找就是找到字符串中的某个符合要求的子串。什么是替换?替换就是将字符串中的某个子串替换成另外一个子串。你可能会说:“那 Word 的查找和替换是不是能够做到这一点呢?” Word 当然可以做到查找和替换,但是它只能查找固定的子串,只能替换成固定的子串:“可以帮我把猪换成狗吗?”然而正则表达式能够迅速满足你这样的要求:“可以帮我把中括号扩起来的内容当成电子邮件的用户名,然后把中括号去掉再加上 @liuyue.asia 吗?”

泛型编程的升级

传言说 C++ 拟在 C++1x 中升级泛型的支持。泛型是什么呢?其实泛型在 C++03 中称为模板,没错,就是 template<typename T> 之类的东西。

由于 C++ 标准号称向下兼容,向下兼容的意思是,以前是对的东西,现在还会是对的;但是以前是错的东西,现在可能支持了。所以,C++1x 会在这方面显得更加随便。

可变数据类型

说到这里,可能有些人已经激动不已了。我的编程是从 Visual Basic 起步的,当我得知这个特性时,我想:“难道 C++ 真的要变成 Visual Basic 了吗?是不是 C++ 与 Visual Basic 的区别,仅仅是 Option Explicit 了呢?”

当然 C++ 不可能变成 Visual Basic. 不过可变数据类型的确算是一个革命性的特性。肯定会有人认为,这会增大运行开销,但是请想一想,你完全可以使用 C++03 的代码,在 C++1x 的标准下,编译出与原来一样效率的程序。

集合内的 for 循环

鸡冻的同学们,请看代码。

int my_array[5] = {1, 2, 3, 4, 5}; for (int & x : my_array) { x *= 2; }

这就是集合内的 for 循环,不久将被 C++1x 支持。

只有想不到

其实 C++ 还有很多特性有待更新,这里只是列举出了传言中的一点点。国内关注标准的人真的不多,我希望国人能够多多关注这些,甚至参与到国际标准的制定中去。

最后说明一点,本文内容多为传言,不保证真实性。但是可以确定的是,C++1x 将在不久的将来发布,并且成为新的 C++ 标准。

加载中
0
HoDull
HoDull

“目前我忙于准备高考,高考完后我想写一本有关新标准的书。”

0
solookin
solookin

引用来自#2楼“HoDull”的帖子

“目前我忙于准备高考,高考完后我想写一本有关新标准的书。”

0
赵开锦
赵开锦

美女啊,这是你的真实头像吗?

还有请教下:“目前我忙于准备高考,高考完后我想写一本有关新标准的书。”是什么意思呢?

0
l
liuzhanlin

肯定不是美女,是帅哥

不怎么关注c++新特性,从你写出的一些特性来看,有些纯属吃饱了撑着,C++正处于尴尬境地。

0
摩西.M
摩西.M

引用来自#5楼“liuzhanlin”的帖子

肯定不是美女,是帅哥

不怎么关注c++新特性,从你写出的一些特性来看,有些纯属吃饱了撑着,C++正处于尴尬境地。

如果你完整地看过Boost实现,经常用Boost,你就不觉得那些增加的是吃饱了撑着的。c++的发展一直处于理论和工业结合的平衡的反复尝试和发展,这点从她诞生开始就是这样子。 C++虽然说确实是越来越复杂(尤其是库的实现), 但实际目标是语言越来越优雅高效,至少在C++0x的paper里,能看出来。在转变过程中肯定有许多阵痛。如果想了解C++0x, 建议除了官方Paper, 再就是 Boost实作,以及GCC4.4以后版本的实现。 Boost实作和GCC的实现要比微软2010的实现要高效(个人评价)。

 楼主,你从哪里看到的消息说C++0x要拖到C++1x了?从未听说。C++0x方案基本已经通过C++标准委员会定下来了,现在包括GCC、VC, BCB都开始逐步支持C++0x标准了(虽然都实现目前都不是很完善)。

"Will there be a C++1x? Almost certainly -- and not just because the committee has slipped the deadline for C++0x."

这是" Bjarne Stroustrup"原话.我不知道我以前看到的是不是过时了。呵呵。。

另外,C++1X别和C1X混了,C1X是C99后继版本。

0
摩西.M
摩西.M

《C++0x 已然拖成 C++1x》这则消息,我在网上搜了一遍,除了中文有这个消息外,在C++官方委员会和C++邮件列表均未发现有类似新闻。而且让我特别意外的是,我记得三月份的时候C++0x的最终草案已经提交讨论了(详细可看http://www.open-std.org/jtc1/sc22/wg21/).

按标准委员会的流程,顶多是细节修改,C++0x不确定,被拖成c++1x的可能性太小。况且从去年GCC和VC以及BCB就开始逐步支持实现C++0x了。

如果谁有该消息英文官方地址,请发给我。谢谢。

0
b
barrypp

引用来自“solookin”的帖子

引用来自#2楼“HoDull”的帖子

“目前我忙于准备高考,高考完后我想写一本有关新标准的书。”

 无语了

0
Lunar_Lin
Lunar_Lin

dique meiyou  C++0X  zhiyou c++03.

      2009   zuizhong banben zhishi yi ge caoan(draft).

0
mallon
mallon

凡委员会设计的大多是很累赘的

呵呵想到“骆驼是委员会设计的马”这句名言

0
来自杭州的小杨
来自杭州的小杨

终究还是得用C++啊。。。

返回顶部
顶部