设为首页 加入收藏

TOP

C++—lambda表达式+优先队列 prority_queue+关键字decltype(四)
2019-09-30 16:41:35 】 浏览:126
Tags:lambda 表达式 优先 队列 prority_queue 关键字 decltype
cptrTempA = &ctempA;
   /*1.dclTempA推断为const double(保留顶层const,此处与auto不同)*/ decltype(ctempA) dclTempA = 4.1; /*2.dclTempA为const double,不能对其赋值,编译不过*/ dclTempA = 5; /*3.dclTempB推断为const double * const*/ decltype(cptrTempA) dclTempB = &ctempA; /*4.输出为4(32位计算机)和5*/ cout<<sizeof(dclTempB)<<" "<<*dclTempB<<endl; /*5.保留顶层const,不能修改指针指向的对象,编译不过*/ dclTempB = &ctempB; /*6.保留底层const,不能修改指针指向的对象的值,编译不过*/ *dclTempB = 7.0;

  3.与引用结合

    int tempA = 0, &refTempA = tempA;

    /*1.dclTempA为引用,绑定到tempA*/
    decltype(refTempA) dclTempA = tempA;
    /*2.dclTempB为引用,必须绑定到变量,编译不过*/
    decltype(refTempA) dclTempB = 0;
    /*3.dclTempC为引用,必须初始化,编译不过*/
    decltype(refTempA) dclTempC;
    /*4.双层括号表示引用,dclTempD为引用,绑定到tempA*/
    decltype((tempA)) dclTempD = tempA;
    
    const int ctempA = 1, &crefTempA = ctempA;
    
    /*5.dclTempE为常量引用,可以绑定到普通变量tempA*/
    decltype(crefTempA) dclTempE = tempA;
    /*6.dclTempF为常量引用,可以绑定到常量ctempA*/
    decltype(crefTempA) dclTempF = ctempA;
    /*7.dclTempG为常量引用,绑定到一个临时变量*/
    decltype(crefTempA) dclTempG = 0;
    /*8.dclTempH为常量引用,必须初始化,编译不过*/
    decltype(crefTempA) dclTempH;
    /*9.双层括号表示引用,dclTempI为常量引用,可以绑定到普通变量tempA*/
    decltype((ctempA))  dclTempI = ctempA;

  4.与指针结合

    int tempA = 2;
    int *ptrTempA = &tempA;
    /*1.常规使用dclTempA为一个int *的指针*/
    decltype(ptrTempA) dclTempA;
    /*2.需要特别注意,表达式内容为解引用操作,dclTempB为一个引用,引用必须初始化,故编译不过*/
    decltype(*ptrTempA) dclTempB;

三、decltype总结

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

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

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

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

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

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

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

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c++ 右值引用 下一篇fopen

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目