auto类型说明符
- auto让编译器通过初始值推算变量的类型。显然,auto定义的变量必须有初始值。
- 使用auto也能够在一条语句中声明多个变量。需注意,一条声明语句只能有一个基本数据类型,所以该语句中所有变量的初始基本数据类型必须一样。
1 | auto i = 0, *p = &i; // 正确,i是整数,p是整型指针 |
- 编译器以引用对象的类型作为auto的类型。
1 | int i = 0, &r = i; |
- auto一般会忽略掉顶层const,同时底层const会保留下来,比如当初始值是一个指向常量的指针时。
1 | const int ci = i, &cr = ci; |
- 如果希望推断出的auto类型是一个顶层const,需明确指出。
1 | const auto f = ci; // ci的推演类型是int,f是const int |
- 可以将引用类型设置为auto,此时原来的初始化规则仍适用
1 | auto &g = ci; // g是一个整型常量引用,绑定到ci |
- 切记,符号&和*只从属于某个声明符,而非基本数据类型(int等)的一部分。
摘自 C++ Primer
评论