c++11新特性

本文仅简单列出c++11新特性:http://c.biancheng.net/view/7863.html

  1. C++ auto类型推导:自动类型推导。
  2. C++ decltype类型推导:解决auto不能适用的场景。
  3. 返回值类型后置:为了解决函数返回值类型依赖于参数而导致难以确定返回值类型的问题。decltype 和 auto 结合使用。
  4. 对模板实例化中连续右尖括号>>的改进:以前模板实例化的连续两个右尖括号(>>)会被编译器解释成 右移操作符,而不是 模板参数表的结束。
  5. 使用using定义别名(替代typedef):优点:简洁,如模板别名
  6. 支持函数模板的默认模板参数:在 C++98/03 标准中,类模板可以有默认的模板参数,但是却不支持函数的默认模板参数。
  7. 在函数模板和类模板中使用可变参数:template<typename... Types>。

    1.当所有模板参数都有默认参数时,函数模板的调用如同一个普通函数。但对于类模板而言,哪怕所有参数都有默认参数,在使用时也必须在模板名后跟随<>来实例化。
    2.除了上面提到的部分之外,函数模板的默认模板参数在使用规则上和其他的默认参数也有一些不同,它没有必须写在参数表最后的限制。甚至于,根据实际场景中函数 模板被调用的情形,编译器还可以自行推导出部分模板参数的类型。

  8. tuple元组详解(c++11新引入类模板(可变模板参数定义的类模板)):tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。应用场景广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以将这些数据存储在 tuple 中,函数只需返回一个 tuple 对象即可。
  9. 列表初始化:C++11支持列表初始化可以用于任何类型对象的初始化。在初始化时,{}前面的等于号是否书写对初始化行为没有影响。
  10. lambda匿名函数用法详解
  11. 非受限联合体(union):联合体(Union)是一种构造数据类型。在一个联合体内,我们可以定义多个不同类型的成员,这些成员将会共享同一块内存空间。

  12. C++11新特性---for循环(基于范围的循环)详解。auto const & 与 auto&类型
  13. constexpr:验证是否为常量表达式。constexpr 关键字的功能是使指定的常量表达式获得在程序编译阶段计算出结果的能力,而不必等到程序运行阶段。C++ 11 标准中,constexpr 可用于修饰普通变量、函数(包括模板函数)以及类的构造函数。-------性能
  14. 新特性--long long超长整形

  15. 右值引用。拷贝构造函数,移动构造函数(避免深拷贝导致的效率问题)

    1. 移动构造函数:
    • 事实上,对于程序执行过程中产生的临时对象,往往只用于传递数据(没有其它的用处),并且会很快会被销毁。因此在使用临时对象初始化新对象时,我们可以将其包含的指针成员指向的内存资源直接移给新对象所有,无需再新拷贝一份,这大大提高了初始化的执行效率。
  16. move()函数。move 本意为 "移动",但该函数并不能移动任何数据,它的功能很简单,就是将某个左值强制转化为右值。

  17. 引用限定符的用法。所谓引用限定符,就是在成员函数的后面添加 "&" 或者 "&&",从而限制调用者的类型(左值还是右值)。左值对象,右值对象。需要注意的一点是,当 const && 修饰类的成员函数时,调用它的对象只能是右值对象;当 const & 修饰类的成员函数时,调用它的对象既可以是左值对象,也可以是右值对象。

  18. C++11完美转发及实现方法详解。所谓完美,即不仅能准确地转发参数的值,还能保证被转发参数的左、右值属性不变。很多场景中是否实现完美转发,直接决定了该参数的传递过程使用的是拷贝语义(调用拷贝构造函数)还是移动语义(调用移动构造函数)。在实现完美转发时,只要函数模板的参数类型为 T&&,则 C++ 可以自行准确地判定出实际传入的实参是左值还是右值。forword() 函数模板用于修饰被调用函数中需要维持参数左、右值属性的参数。

  19. nullptr:初始化空指针。实际开发中,避免产生“野指针”最有效的方法,就是在定义指针的同时完成初始化操作,即便该指针的指向尚未明确,也要将其初始化为空指针。#define NULL 0。nullptr 是 nullptr_t 类型的右值常量,专用于初始化空类型指针。nullptr 可以被隐式转换成任意的指针类型。

  20. shared_ptr智能指针。使用智能指针可以很好地避免“忘记释放内存而导致内存泄漏”问题出现。C++11新添加了unique_ptr、shared_ptr 、weak_ptr三个智能指针。

posted @   我有时候也想努力  阅读(271)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示