auto类型说明符

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是指向整型常量的指针

 

posted @ 2020-05-03 00:56  顾小朝  阅读(177)  评论(0编辑  收藏  举报