zoukankan      html  css  js  c++  java
  • auto和decltype(c++11)

    1.auto

    1)auto是一个类型说明符(类型说明符就是像int、double这样的),用来定义一个变量,它可以让编译器去分析表达式的类型,并使用该表达式的值去初始化变量  

    //auto定义的变量必须有初始值
    int v1 = 1, v2 = 2;
    auto item = v1 + v2;//编译器根据v1和v2相加的结果推断item的类型,并完成对item的初始化

    2.dectype

    1)dectype也是一个类型说明符,但它只让编译器去分析表达式的类型,并不用该表达式的值去初始化变量

    int cj = 0;
    decltype(cj) x = 1;
    decltype(cj) y;

    2)当decltype的右边是一个计算表达式,如果它的结果是左值,则将得到的是一个引用,如:解引用符*、函数调用运算符()

    int i = 0;
    int* p = &i;
    decltype(*p) c;//错误!!!解引用符返回左值,所以c是int&,必须初始化
    decltype((i)) d;//错误!!!函数调用运算符返回左值,所以d是int&,必须初始化

    3)decltype还可以作用于某个函数时,返回的是函数类型

    int add(int a, int b)
    {
        return a + b;
    }
    
    int jian(int a, int b)
    {
        return a - b;
    }
    
    int main()
    {
        function<decltype(add)> f1=jian;
        cout << f1(10,3) << endl;        //输出:7
    
        return 0;
    }
  • 相关阅读:
    LINUX云计算40个相关问题
    sql
    补肾
    少吃食品
    抗癌食品
    爱情感言
    分布式事务的处理
    前端
    JAVA->Enum
    Sleuth+Zipkin+Log
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9904260.html
Copyright © 2011-2022 走看看