c++auto与decltype的区别

auto和decltype是两种类型推断方式,二者区别主要在三个方面。

第一,auto类型说明符用编译器计算变量的初始值来推断类型,而decltype虽然也通过编译器分析得到他的类型,但不计算表达式的值,表达式内的变量并不因decltype操作而发生改变。

第二,编译器判断的auto类型有时是不符合我们预期的,编译器将适当改变结果类型使其更符合初始化规则,其中最典型的一条就是auto会忽略顶层const而保留底层const(对于顶层const和底层const,最简单的记法是顶层const表示定义变量本身是个常量,底层const表示定义变量指向的对象是个常量,const在类型名前为顶层,在类型名后为底层)。与auto不同,decltype会保留顶层const。

第三,decltype结果类型与表达式形式密切相关,若变量名上加了一对括号,得到的类型与不加括号时会有不同(双括号必为引用类型,单括号要表达式本身是引用类型才为引用类型),而auto没有这样的变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值