c++ - 与 C++03 相比,C++11 带来了哪些好处?

标签 c++ 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/

相关文章:

C++:实例化库中的许多模板

c++ - 防止早期对象破坏

C++11 "In class initialization"功能不适用于 union

c++ - 读取给定路径中保存的 EVTX 文件

c++ - 如何将继承类拆分为不同的 .h/.cpp 文件?

c++ - 我可以将每次移动引用的数组传递给 std::thread 吗?

c++ - 为变量与参数中的字符串键入 std::string 的 id?

c++ - 为什么在派生类c++中找不到基类成员

c++ - 使用预处理器制作用户定义的文字

c++ - 在 Objective-C 代码中使用带有 C++ 实例变量的 Objective-C++ 类