zoukankan      html  css  js  c++  java
  • C++11的decltype关键字

    C++11的decltype关键字

    概述

    decltype关键字和auto有异曲同工之处

    有时我们希望从表达式的类型推断出要定义的变量类型,但是不想用该表达式的值初始化变量(如果要初始化就用auto了)。为了满足这一需求,C++11新标准引入了decltype类型说明符,它的作用是选择并返回操作数的数据类型,在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。

    使用方法

    int getSize();
    
    int main(void)
    {
        int tempA = 2;
        
        /*1.dclTempA为int*/
        decltype(tempA) dclTempA;
        /*2.dclTempB为int,对于getSize根本没有定义,但是程序依旧正常,因为decltype只做分析,并不调用getSize,*/
        decltype(getSize()) dclTempB;
    
        return 0;
    }
    

    还有很多用法,此处暂不深究。

    注意事项

    decltypeauto都可以用来推断类型,但是二者有几处明显的差异:

    1. auto忽略顶层const,decltype保留顶层const

    2. 对引用操作,auto推断出原有类型,decltype推断出引用

    3. 对解引用操作,auto推断出原有类型,decltype推断出引用

    4. auto推断时会实际执行,decltype不会执行,只做分析

    总之在使用中过程中和const、引用和指针结合时需要特别小心。

    参考

    https://www.cnblogs.com/cauchy007/p/4966485.html

  • 相关阅读:
    luogu P3398 仓鼠找sugar
    关于lca
    luogu P3374 【模板】树状数组 1
    [NOIp2013普及组]车站分级
    [HDU1598]find the most comfortable road
    [NOI2015]程序自动分析
    [USACO08DEC]Secret Message
    [洛谷3375]【模板】KMP字符串匹配
    [ZJOI2010]网络扩容
    [SCOI2007]修车
  • 原文地址:https://www.cnblogs.com/molinchn/p/13630716.html
Copyright © 2011-2022 走看看