<分区>
一个月后我将开始学习 C++11,我想知道,与 C++03 相比,C++11 有哪些优势?
<分区>
一个月后我将开始学习 C++11,我想知道,与 C++03 相比,C++11 有哪些优势?
最佳答案
如果我必须将其归结为两点,我会说“右值引用和可变参数模板”是 C++11 相对于 C++03 最深刻的改进。两者都允许您做一些本来应该一直可能的事情,并为语言增加了巨大的表达能力。最后,由于右值引用,您可以拥有一个适当的 unique_ptr
和具有移动语义的容器,以及由于两种构造和谐播放而直接构造而不是复制构造:
template <typename ...Args>
void construct(void * p, Args &&... args)
{
::new (p) T(std::forward<Args>(args)...);
}
另一个巨大的改进是将内存模型合并到允许对并发执行(多线程)进行标准化描述的语言中。
不过,有大量较小的添加项使该语言更具表现力,并允许您做以前根本做不到的事情:
大括号初始化允许您初始化类成员数组和值构造自动对象。
初始化列表允许您初始化容器。
更好的常量表达式概念。
更好地指定类和 union 的内存布局,以及“琐碎”的细粒度概念以允许尽可能多地进行优化。
lambda 表达式和闭包使算法和函数式编程变得更加容易和可行。
关于c++ - 与 C++03 相比,C++11 带来了哪些好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834896/