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;
    }
  • 相关阅读:
    11 数据的增删改
    10 外键的变种 三种关系
    09 完整性约束
    03 body标签中的相关标签
    02 body标签中的相关标签
    01 HTML介绍和head标签
    08 数据类型(2)
    07 数据类型
    06 表的操作
    偶遇RecyclerView内部Bug
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9904260.html
Copyright © 2011-2022 走看看