C++11可以说是一个里程碑,针对C++本身的诸多问题,提供了优秀的思路和解决方案,作者从其中的几个点来介绍下C++11的几个典型特征。
概括新特性包括:auto类型推断、右值引用、智能指针、lambda表达式,另外还有 类型初始化列表、decltype、模板改进等,不在本节讨论范围内,感兴趣的同学请自行搜索。
一. Auto类型推断
在C++11之前,与其他动态语言不同,C++的类型必须是提前确定的,引入auto定义变量类型,与动态语言的区别在于能够在编译阶段确定变量类型,而不会影响运行速度。
二. 右值引用
先说左值 和右值 的概念,左值(lvalue)是指正常的程序变量,因为能够出现在左边(能够被赋值)而得名,而右值(rvalue)通常是指临时变量,无法放在左边进行赋值,这里的临时变
概括新特性包括:auto类型推断、右值引用、智能指针、lambda表达式,另外还有 类型初始化列表、decltype、模板改进等,不在本节讨论范围内,感兴趣的同学请自行搜索。
一. Auto类型推断
在C++11之前,与其他动态语言不同,C++的类型必须是提前确定的,引入auto定义变量类型,与动态语言的区别在于能够在编译阶段确定变量类型,而不会影响运行速度。
auto i; /**< 错误*/
auto j=1; /**< int*/
auto k=1.0f; /**< float*/
auto strName="linol"; /**< string*/
可以看到,auto必须通过类型赋值,才能够确定,因此,不能仅通过变量声明来进行初始化(上面第一行)。
二. 右值引用
先说左值 和右值 的概念,左值(lvalue)是指正常的程序变量,因为能够出现在左边(能够被赋值)而得名,而右值(rvalue)通常是指临时变量,无法放在左边进行赋值,这里的临时变