C++11新特性
auto关键字
C语言中其实就有auto关键字,修饰可变化的量,但是由于平时我们直接使用int a = 10;也是声明变量,编译器已经自动帮我们加上了auto关键字,是C语言中应用最广泛的一种类型,也就是说,省去类型说明符auto的都是自动变量!
随着时代进步,Java10中有一个新特性,就是使用var来定义变量,当然前提是类型可推导,语言总是在演化,C++11也是支持了这个新特性,不过在C++11中是auto关键字:使用auto的时候,编译器根据上下文情况,确定auto变量的真正类型!
接下来演示一下auto的使用:
int main() {
auto a = 10;
auto b = 20;
list<string> s;
list<string>::iterator be = s.begin();
list<string>::iterator en = s.end();
auto be2 = s.begin(); //很显然使用auto可以减少很多不必要的代码
auto en2 = s.end();
return 0;
}
很显然使用auto可以减少很多不必要的代码,但是:
- auto不能作为函数参数
- auto不能直接用来声明数组
- auto不能定义类的非静态成员变量
- 实例化模板时不能使用auto作为模板参数
- auto作为函数返回值时,只能用于定义函数,不能用于声明函数
- 为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法
