C++Primer第五版第二章练习2.38

本文比较decltype和auto在C++中的类型推断,强调auto依赖于初始值推断类型,而decltype仅分析表达式,不计算值。通过实例展示两者在处理常量引用和顶层const的区别。
/*
练习2.38:说明由decltype指定类型和由auto指定类型有何区别。请举一个例子,decltype指定的类型和auto指定的类型一样。
再举一个例子,decltype指定的类型与auto指定的类型不一样。
区别:
1)auto是通过表达式的初始值来推算变量的类型,因此auto定义的变量必须有初始值;
decltype是分析表达式的类型,但是不实际计算表达式的值,decltype定义的变量不要求必须有初始值。
2)引用作为auto的初始值时,使用的是引用的对象;
引用作为decltype的参数时,使用的是引用类型。
{顶层const:指针本身是个常量}
3)auto默认忽略顶层const,想要推断出顶层const,需要明确指出:const auto var=ci;
decltype的参数,不会忽略顶层const。
两者指定的类型一样的例子:
int i,j;
auto k=i;
decltype(i) k;
两者指定的类型不一样的例子:
const int ci=1;
auto var1=ci;//var1是一个整型变量,顶层属性被忽略掉了
decltype(ci) var2=2;//var2是一个整型常量。
///////////////////
int i, &r=i;
auto var3=r;//var3是一个整型变量,值为i的拷贝;
decltype(r) var4=i;//var4是一个对整型变量的引用,绑定到了i上。
*/





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值