编程时常常需要吧表达式的值赋值给变量,这就要求在声明变量的时候清楚的知道表达式的类型。然而做到这一点并非那么容易,有时甚至根本做不到。为了解决这个问题C++11新标准引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型。和原来那些只对应一种特定类型的说明符(比如 int ,double)不同,auto让编译器通过初始值来推算变量的类型。显然,auto定义的变量必须有初始值。
int val1=10,val2=20;
auto sum=val1+val2;
编译器会根据参与运算的变量的类型自行推断出用auto定义的变量应该是什么类型。
auto的使用细则
1. auto与指针和引用结合起来使用 用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&。
int x = 10;
auto a = &x;
auto* b = &x;
auto& c = x;
2. 在同一行定义多个变量 当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对 第一个类型进行推导,然后用推导出来的类型定义其他变量。
auto a = 1, b = 2;
auto c = 3, d = 4.0; // 该行代码会编译失败,因为c和d的初始化表达式类型不同
auto不能推导的场景
1. auto不能作为函数的参数
2. auto不能直接用来声明数组