c++11 之 auto、decltype关键字与尾置返回类型

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];  // 注 * 优先级比[] 低。

猜你喜欢

转载自blog.csdn.net/ypy9323/article/details/81412969