论decltype和auto的区别

本文详细对比了C++中decltype和auto的区别,特别是它们在处理引用变量及const修饰符时的行为差异。通过具体示例说明了两种关键字的不同用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论decltype和auto的区别

 
decltype和auto的区别
①对引用变量的不同之处:auto将引用变量赋给变量后,变量的类型为引用变量所对应的变量的类型。而decltype则是为引用类型。例子如下:
int i = 0,&r = i;
//same
auto a = i;
decltype (i)b = i;
//different
auto c = r; c为int 类型
decltype (r)d = r;//d为int &类型
②处理底层const的方式不同
auto一般会忽略掉顶层的const,同时底层的const会被保留下来
例子:
const int ci = i,&cr = ci;
auto b = ci;整数
auto c = cr;整数
auto d = &i;整型指针
auto e = &ci;指向整数常量的指针
decltype 则会返回该变量的完整类型(包括顶层const和引用在内)
例子:
const int ci = 0,&cj = ci;
decltype (ci) x = 0;const int 型
decltype (cj) y = x;const int 型
decltype (cj) z ;错误,z是一个引用,引用必须初始化
 
另外decltype ((variable))  (注意是双层括号)的结果永远是引用,而decltype(variable)结果只有当variable本身是一个引用的时候才是一个引用。

转载于:https://www.cnblogs.com/guxuanqing/p/10618820.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值