zoukankan      html  css  js  c++  java
  • c++ decltype和auto对比学习

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7 
     8     int a=1;
     9     int b=2;
    10     int &ra = a;
    11     int *ptr = &a;
    12     /*
    13     *1.decltype对于括号和解引用操作符*,会解析为引用&
    14     *int &ra = a;
    15     *decltype(ra) da; //int &
    16     *decltype(a) db;  //int
    17     *decltype((a)) dc;//int &,必须初始化,否则报错
    18     */
    19     //  decltype(ra) refa; //int &,error:reference must initialized
    20     decltype(a) testb; //int
    21     //  decltype((a)) refb; //int &,error:reference must initialized
    22     //  decltype(*ptr) refc;//int &,error:reference must initialized
    23 
    24     /*
    25     *2.decltype和auto对于const的处理对比
    26     *decltype 保留底层const和顶层const
    27     *auto只保留底层const
    28     *auto不得不保留底层const是因为从底层const常量转换为没有底层const的变量是错误的
    29     *const int *cpa = &i;
    30     *auto a = cpa; //a是const int *
    31     */
    32     //顶层const,decltype保留,auto忽略
    33     const int cona = 1;
    34     decltype(cona) td = 1; // const int
    35     auto hd = cona;   //int
    36     hd = 1; //ok
    37     //  td = 1; //error:const int read-only
    38 
    39     //底层const,decltype保留,auto保留
    40     const int *conb = &a;
    41     decltype(conb) te = &a;//const int *
    42     //  *te = 2; //error:const int * read-only locatin
    43     auto fe = conb; //const int *
    44     //  *fe = 3; //error:assignment of read-only location
    45 
    46     //底层和顶层const
    47     const int * const conc = &a;
    48     decltype(conc) tf = &a; //const int * const
    49     //tf = &b; //error:assignment of read-only variable
    50     //*tf = 3; //error:assignment of read-only location
    51     auto ft = conc; //const int *
    52     ft = &b; //ok
    53     //  *ft = 4;  //error:assignment of read-only location
    54     return 0;
    55 }
  • 相关阅读:
    crm 4 注释与上传附件权限
    动态图片轮播
    PHP 连接 MSSQL
    php mssql 中文各种乱码
    百度地图逆地址解析
    Microsoft Visual C++ 2015 Redistributable(x64)
    服务器 vps 空间
    Python之路【第二篇】:Python基础(二)
    Python之路【第一篇】:Python简介和入门
    2016年会成为Java EE微服务年吗?
  • 原文地址:https://www.cnblogs.com/CreatorKou/p/8881101.html
Copyright © 2011-2022 走看看