1 auto类型推导
1.1 auto类型推导的意义
auto x = 5;
auto pi = new auto(1); //pi被推导成int* new int(1);
const auto *v = &x, u=6; //v是const int*类型, u是const int类型
static auto y = 0.0; //y是double类型
auto int r; //错误,auto不再表示存储类型指示符
auto s; //auto无法推导出s的类型
v和u的推导要注意两点:
-
虽然经过前面const auto *v = &x的推导,auto的类型可以确定为int了,但是u仍然必须要写后面的“=6”,否则编译器不予通过。
-
u的初始化不能是编译器推导产生二义性。例如,把u的初始化改为“u=6.0”,编译器将会报错。
auto并不能代表一个实际的类型声明(如s的编译错误),只是一个类声明类型的“占位符”。使用auto声明的变量必须马上初始化,以让编译器推断出它的实际类型,并在编译时将auto替换为真正的类