C++11数据类型特性

1.新增加了类型

   longlong 与unsigned long long 以支持对64 Int 类型的支持;新增加了char16_t与char32_t来支持char类型的16位与32位的字符表示 ; 新增加了auto关键字,让编译器根据初始值的类型推断变量的类型

2.右值引用

   传统的左值是一个表示数据的表达式(如变量名以及指针等),左值可以放于赋值表达式的左边;

    右值仅仅是一块数据(返回值,表达式结果值),右值一般可以放到赋值表达式的右边

   右值引用的出现,使得我们可以直接对这块右值数据进行引用,然后进行数据上的一些操作,避免重复的复制。

   举例

    符号重载+ 【C++Primer Plus 6th】C++11新特性

     构造函数:参数为值引用【C++Primer Plus 6th】C++11新特性

      构造函数:右值引用参数 【C++Primer Plus 6th】C++11新特性

      【C++Primer Plus 6th】C++11新特性

3.统一的初始化

   C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有内置类型和用户定义的类型(即类对象),使用初始化列表的时候可以添加等号(=),也可以省略

  模板 initializer_list 模板初始化列表

  您可以使用初始化列表来为Stl容器初始化为一系列值

   std::vector<double> a {6.5,7.47,3.65,5.45};

   支持初始化列表中进行隐式转换(精度由低到高)

4.模板别名

   typedef std::array<double,12>arrd ;

   typedef std::array<int,12>arri ;

   typedef std::array<float,12>arrf ;

   arrd a; arri b; arrf c; //使用别名来声明对象

  进行模板别名应用

  template <typename t >

  using arrtype  =  std::array<t,12>

  arrtype<double> a;

   arrtype<int>b;

   arrtype<float> c;

   11中还允许为非模板类进行定义别名

   【C++Primer Plus 6th】C++11新特性

 

C++11结构流程新特性

1.基于范围的for循环

    double p[5] = {4.5,4.6,452.2,66.1};

     for(double x : p)      //非引用版本。替换表达式为 for( double &x : p)为引用版本

         cout<< x <<endl;

2.作用域内枚举

     传统枚举中,相同作用域下的相同枚举值将无法通过编译

     【C++Primer Plus 6th】C++11新特性

      使用类作为枚举量的作用域

       【C++Primer Plus 6th】C++11新特性 

      其中作用域内枚举无法隐式完成整型转换,而传统可以 

 3.无序关联容器

    有序关联容器即普通的Map由红黑树构建底层,会根据键值进行排序,优化查找速率

    无序关联容器即HashMap底层由哈希表来构建,每次插入新值不会进行排序,未优化查找效率,但提高了删除和添加的效率

4. 异常规范

    在C++98中加入的异常规范,在C++11中不建议使用,以此来编译器优化代码

     原加入的异常规范举例:【C++Primer Plus 6th】C++11新特性

      可以使用新增关键字noexception来显示保证函数不会引发异常

      【C++Primer Plus 6th】C++11新特性

5.Lambda表达式

   [](int x){     return ~;              }  省略返回值得类型是由decltype根据返回值进行推导的 (仅适用于函数体内包含仅return一条语句的情况)

  否则:[](int x) -> double{ int y = 2; return y+x }  

   重点:可以使用[&变量名称]来进行对Up-Value 进行值引用使用,否则,为值传递

【C++Primer Plus 6th】C++11新特性

       

相关文章:

  • 2021-05-25
  • 2021-05-20
猜你喜欢
  • 2021-10-09
  • 2021-10-19
  • 2021-05-11
  • 2021-04-19
  • 2021-05-30
  • 2021-11-19
相关资源
相似解决方案