C++之decltype 与 auto

decltype 与 auto

二者都用于声明变量类型,auto 通过初始值判定变量类型,decltype通过()中表达式返回值类型或变量类型决定变量类型。

decltype与引用
  1. decltype(f()) 其中并非真的执行f()函数,而是使用f()返回值的类型。

  2. decltype(a) ,若为变量时,引用和const都会连带变量类型返回。

  3. 表达式为解引用操作会返回引用类型,如decltype(*p) a=b;(p为int类指针),此时a为int & ,需要有初始值且类型相同的变量b(int)。

  4. 当变量加(),即decltype((b)) d=a; 此时返回类型为引用类型,int&;

  5. 当表达式为赋值操作,如decltype(a=b),decltype(a=4),时,返回引用类型。

auto与引用
  1. auto 定义的变量必须有初始值,且一条声明语句中只有一个基本数据类型,即语句中所有变量的初始数据类型一致。

  2. auto的初始化对象为引用对象时,auto 一般忽略掉顶层const,保留底层const; 如:const int a=4; auto b=a;(b为int) 而const int * c=&a; auto d=c;(d为const int * )

  3. 当设置 auto的引用时,顶层const和底层const都会保留下来!如:const int *const a=&b; auto &c=a;auto d=a;(c为const int *const,而d为const int *)

C++14 decltype(auto)

简化decltype()中表达式 和原用法原则完全相同,不会因auto对于顶层底层const的保留问题而有所变化。
例:const int a=4;
const int *const c=&a;
decltype© t=c;
decltype(auto) k=c;
这两种定义的变量均为const int *const 类型

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值