c++11新引入两个关键字: auto、decltype来进行类型说明。它们为较复杂类型的声明提供了帮助。
一、auto关键字
1> 类似c#关键字var,由它声明的对象类型依赖于表达式的类型,因此auto定义的变量必须有初始值:
int a = 9;
auto a1 = a; // 正确a1为int型
auto a2; //错误
2>将对象推导为常量:
const int a3 = a;
const auto a4 = a3; // auto一般会忽略掉顶层const(顶层const 可以表示任意对象是常量),此时 a4为 const int 。
3>可以将引用的类型设为auto
const auto & a5 = 89;
二、decltype 关键字
用于提供被操作数的数据类型,与auto不同decltype不会忽略任何修饰。
int a = 9;
const int a1 = a;
decltype(a1) a2 = 9; // a2 为const 必须初始化;
三、尾置返回类型
任意函数的定义都可以使用尾置返回类型,通常使用于较复杂的返回类型,比如:数组指针,函数指针。
尾置返回类型的语法是: 在函数参数列表的后边加一个 -> 后边跟实际返回类型。
如返回数组指针的函数:
auto foo(int)-> int(*)[3]; // 注 * 优先级比[] 低。