c++11——auto,decltype类型推导
c++11中引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能够方便的获取复杂的类型,而且还能简化书写,提高编码效率。 auto和decltype的类型推导都是编译器在编译的时候完成的,auto是通过定义auto变量时候给出的表达式的值推导出实际类型,并且 在声明auto变量时必须马上初始化 ;decltype通过表达式的值推导出实际的类型,但是可以只声明变量,而不赋值。 auto类型推导 1. auto推导 auto x = 5; //被编译器推导为int类型 auto pi = new auto(1); //编译器推导为int const auto* v = &x, u = 5; //v为 const int*, u为 const int static auto y = 0.1; //y为static const double auto s; //出错! auto变量不能只声明不初始化 2. auto推导规则 (1)当不声明为指针或引用时,auto的推导结果和初始化表达式抛弃引用和cv限定符后的类型一致;(cv限定符: const volatile限定符) (2)当声明为指针或引用时,auto的推导结果将保留初始化表达式的cv限定符。 int x = 0; auto *a = &x; //a为 int* auto b = &x; //b为 int*