C++11 中引入了哪些新的更改?


C++11 是标准 C++ 语言的一个版本。它于 2011 年 8 月 12 日获得国际标准化组织 (ISO) 批准,之后还有 C++14 和 C++17。C++11 对核心语言做了一些补充。

以下是 C++11 中引入的一些新的更改:

  • nullptr - 在以前的版本中,零用作值,并且它有一个缺点,即隐式转换为整数值。空指针文字由 std::nullptr_t 表示。在这个 nullptr 中,不存在隐式转换。

  • Lambda 表达式 - Lambda 表达式允许在本地定义函数。匿名函数称为 Lambda。我们可以在任何需要函数对象 std::function 的地方使用 Lambda 表达式。

  • 智能指针 - 智能指针 auto_ptr 是唯一的智能指针,现在已弃用。C++11 中添加了另外三个智能指针,即 shared_ptr、unique_ptr 和 weak_ptr。

  • auto - 在以前的版本中,我们必须指定对象的类型,但在 C++11 中,无需指定类型,这意味着您可以直接声明变量而无需指定它们的类型。

  • Override 和 Final - C++11 版本引入了两个新的特殊标识符,即 override 和 final。Override 指示该方法应该覆盖基类中的虚方法。另一方面,final 指示派生类不应覆盖虚方法。

  • 删除和默认函数 - 删除的函数用于防止对象复制。要禁用复制,使用“=delete;”。默认函数指示编译器生成函数的默认实现,而“=default;”用于默认函数。

  • 基于范围的 for 循环 - C++11 引入了基于范围的 for 循环来迭代集合。现在,可以像迭代 C 数组一样迭代。它支持迭代的“foreach”范式。

  • 强类型枚举 - 在传统的枚举中,它们过去会将其枚举器导出到周围的作用域中。它们被指定为“enum class”关键字。它们不会将其枚举器导出到周围的作用域中。

  • Static_assert 和类型特征 - 它在编译时执行断言检查。如果断言为真,则不显示任何内容,否则显示错误消息。

  • 新的 C++ 算法 - C++11 标准库引入了新的算法,其中包含一些操作,例如 all_of()、any_of 和 none_of()。

更新于:2019-07-30

142 次浏览

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告