C++ auto与decltype

1、decltype()作用在引用上返回引用类型;
2、并且保留顶层const的语义。
3、作用在解引用运算*p上返回引用类型
4、形如decltype( (XXX) ) 永远返回引用类型
5、作用于赋值表达式上返回引用类型。decltype( a=b )

例如:

const int a = 1;
int b = 2;
int &r = b;
decltype(r) r2 = b; //r2 为 int &
decltype(a) c = 3; //c为 const int 

auto为引用推断出的类型是其绑定的对象的类型,即没有引用类型。
并且auto不保留标识符自身为顶层const的const语义。

const int a = 100;
auto b = a; // auto 为b=a推断出的类型是int 。因为b=a本身是顶层const,auto默认不会保留const
auto c = &a; //auto 为 c=&a 推断出的类型是const int* 。c=&a首先是个指针类型,并且它是底层const的,auto为其自动保留const语义

结合上引用再举几个例子

const int a = 100;

auto &r1 = a;  //推断出的类型是const int &r1。因为&r1 = a属于底层const,auto会保留const语义

const auto &r2 = 200;  //auto推断出的类型是int,又因为前面加上了const(底层),因此整体的类型是 const int &r2 = 200;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值