C ++开发的日常工作将在几年内完成?什么C ++ 0x功能最能改变C ++开发?
我应该以什么顺序集中学习这些新功能?
答案 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)
auto 和算法的 lambdas ,我将开始大量使用for_each。
答案 11 :(得分:-1)
<强>概念即可。最后,我们将能够在实例化之前对模板进行类型检查,当我们错误地实例化它们时,我们将得到合理的错误消息。哎呦! C ++ 0X委员会无法达成一致并最终将它们抛弃。好吧,等待C ++ 1X ......