c++11引入了auto 类型说明符
作用:让编译器替我们去分析表达式所属的类型.和原来那些只对应一种特定类型的说明符(如double)不同, auto 让编译器通过初始值来推算变量的类型.
显然, auto 定义的变量必须拥有初始值.
1 //由 val1 和 val2 相加的结果来推断 item 的类型 2 auto item = val1 + val2; //item 初始化为 val1 和 val2 相加的结果
此处编译器将根据 val1 和 val2 相加的类型来推断 item 的类型. eg. 如果这两个变量的类型是double ,则 item 的类型就是double , 以此类推.
使用 auto 也可以在一条语句中声明多个变量. 因为一条声明语句只能有一个基本数据类型,所以改语句中所有变量的初始基本数据类型都必须一样.
复合类型 常量 和 auto
(1)当引用被用作初始值时, 真正参与初始化的其实是引用对象的值. 编译器以引用对象的类型作为 auto 的类型.
(2)auto 一般会忽略顶层const,同时底层const 会保留下来(对常量对象取地址是一种底层const)
(3)要在一条语句中定义多个变量,切记, 符号& 和* 只从属于某个声明符, 而非基本数据类型的一部分, 因此初始值必须是同一种类型:
1 auto k = ci, &I = i; // k 是整数 I 是整型引用 2 auto &m = ci , *p = &ci; // m 是对整型常量的引用, p是指向整型常量的指针