C ++ 11中引入了哪些新变化?

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

C ++ 11中引入了一些新更改-

  • nullptr-在以前的nullptr中,零曾经是值,它具有隐式转换为整数值的缺点。空指针文字由std::nullptr_t表示。在此nullptr中,不存在隐式转换。

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

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

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

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

  • 删除的功能和默认功能-删除的功能对于防止对象复制很有用。要禁用复制,“ =删除; “ 用来。默认函数向编译器发出指令,以生成函数的默认实现和“ = default; ”用于默认功能。

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

  • 强类型枚举-在传统枚举中,它们通常在周围范围内导出其枚举数。它们被指定为“枚举类”关键字。他们不会在周围的范围内导出其枚举数。

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

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