C++引入auto关键字主要有两种用途:一是在变量声明时根据初始化表达式自动推断该变量的类型,二是在声明函数时作为函数返回值的占位符。
- auto关键字使用场景
场景一,申明普通变量 auto num = 10;
场景二,函数返回值,如果没有auto,总是要巧那么长的返回值,有了auto关键字后,是不是心里感觉很爽。
vector str_vec;
vector::iterator it_old = str_vec.begin();
auto it_new = str_vec.begin();
场景三,申明函数返回值
auto add(int a, int b)->int {return a + b;}
- auto使用需要注意的几个问题
1、使用auto关键字的变量必须有初始值,编译器才能推导出变量类型。
2、在传递const变量的时候,使用auto必须自己加const
const int a =10;
auto b = a; // b的类型是int
const auto c = a; // c 的类型是const int
3、关于很奇葩的函数返回值
auto关键字只能在函数的返回值使用auto关键字,并且在函数尾还需要标注返回类型
4、函数参数和模板参数不能被声明为auto。
5、对于数组类型,auto关键字会推导为指针类型,除非被声明为引用。例如:
int a[10];
auto b = a;// int *
auto &c = a; // 输出:int [10]