哪个C ++ 0x功能影响最大?

时间:2010-05-16 16:55:49

标签: c++ c++11

C ++开发的日常工作将在几年内完成?什么C ++ 0x功能最能改变C ++开发?

我应该以什么顺序集中学习这些新功能?

12 个答案:

答案 0 :(得分:37)

我个人认为移动语义(和一般的rvalue引用)是最重要的变化,与threads / locks / atomics相同。其他一切或多或少都是简化语法或普通第三方解决方案的标准化 - 我们可以在需要lambdas时编写仿函数,并且我们有许多正则表达式库。即使缺乏原子操作也有一些解决方案,但是没有移动构造函数/移动赋值运算符。

能够移动物体会改变我对语言的整体看法。尽管我们已经使用了RVO和交换临时技巧来模仿其中的一些,但很难想象当这是日常生活的一部分时,生活会如何变化。它不仅仅是ofstream("log.txt") << "Hi!";,也不是更快的STL算法,它是在函数之间传递数据的全新方式。

答案 1 :(得分:26)

自动因为人们会过度使用它。

答案 2 :(得分:25)

Lambdas ,因为他们最终引入了合理的方法来利用函数式编程的好处。

答案 3 :(得分:21)

基于范围的for循环。

for (int x: numbers) std::cout << x << " ";

耶!

答案 4 :(得分:18)

Unicode支持。没有更多的鹅卵石和黑客可以正确处理unicode字符 - 现在整个unicode标准本身都支持该语言。

答案 5 :(得分:7)

auto,lambdas和智能指针。

答案 6 :(得分:4)

线程和同步的标准工具。

答案 7 :(得分:2)

正则表达式作为标准库 - 您知道需要它们。

答案 8 :(得分:2)

这是一篇关于新功能的精彩文章 Explicating the new C++ standard (C++0x), and its implementation in VC10

auto关键字用于自动数据类型推导(在编译时),具体取决于初始化。

decltype关键字用于从表达式推导数据类型或自动变量

nullptr关键字现在提升空指针,并且已被授予关键字!

static_assert关键字用于编译时断言。对于使用#ifdef无法完成的模板和验证很有用。

Lambda表达式本地定义的函数。继承函数指针和类对象(仿函数)的特性。

尾随返回类型当无法表达模板化函数的返回类型时,它非常有用。

R值引用移动语义 - 临时对象被销毁之前的资源利用率。

还介绍了Microsoft新编译器的新功能

答案 9 :(得分:2)

我们大约一个月前切换到2010年。我们使用的两个最常见的东西是auto和lambda。 Rvalue引用允许我做许多之前不可能的事情,但在日常使用中,它们不是用作lambda和auto。

答案 10 :(得分:0)

for循环中的

auto 和算法的 lambdas ,我将开始大量使用for_each。

答案 11 :(得分:-1)

<强>概念即可。最后,我们将能够在实例化之前对模板进行类型检查,当我们错误地实例化它们时,我们将得到合理的错误消息。哎呦! C ++ 0X委员会无法达成一致并最终将它们抛弃。好吧,等待C ++ 1X ......