auto关键字
c++11
使用auto
来做自动类型推导,编译器会在编译期间自动推导出变量的类型。
[[toc]]
基本使用语法:
1 | auto name = value; |
name
: 变量的名字
value
: 变量的初始值
auto仅仅是一个占位符,在编译期间它会被真正的类型所替代,或者说,c++中的变量必须是有明确类型的。
例:
1 | auto n = 10; |
第1行中,10是一个整数,默认为int
类型,auto
推导出为int
。
第2行中,3.14为一个浮点数,默认为double
,auto
也为double
。
第3行中,&n
的结果是一个int*
类型的指针,所以auto
为int*
.
第4行中,str为一个字符串为const char*
类型,所以auto
为const char*
,也即一个常量指针。
auto的限制
使用
auto
时必须对变量进行初始化auto
不能在函数的参数中使用
我们在定义函数时只是对函数进行了声明,指明了函数的类型,但是并没有对它进行初始化赋值,只有在实际使用时才会给参数赋值, 而
auto
要求必须对变量进行初始化。
auto
不能作用于类的非静态成员变量(也就是没有static
关键字修饰的成员变量)中auto
关键字不能定义数组
1 | char word[] = "hello world"; |
auto
不能作用于模版参数
1 | template<typename T> |
auto的应用
使用auto定义迭代器
我们的常规写法遍历容器中的元素:
1 | # |
可以看出写起来非常麻烦,并且容易出错,我们可以通过auto
类型推导:
1 |
|
auto可用于范型编程
1 |
|
运行结果为:
100
hello world