decltype类型指示符

本文深入探讨C++11中decltype的使用方法,包括如何识别顶层和底层const,处理引用类型,取表达式类型而不执行表达式,以及处理变量组合表达式和解引用操作。通过实例讲解decltype在不同场景下的行为。

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

C++11新标准引入,选择并返回操作数的数据类型
(1)顶层const和底层const均可以识别,auto只处理底层const

const int ci =0,&cj=ci;
decltype(ci) x = 0; //x的类型是const int
decltype(cj) y=x; //y的类型是const int&

(2)如果传入的是引用,返回的类型也是引用,不会因为引用本身不是个对象,而去取引用绑定的对象的数据类型

const int ci =0,&cj=ci;
decltype(ci) x = 0; //x的类型是const int
decltype(cj) y=x; //y的类型是const int&

(3)取表达式的类型,但不执行表达式

int a = 3, b=4
decltype(a) c=a;
decltype(a=b) d=a; //d是 int&
//执行之后a=3 b=4 c=3 d=3

(4)如果传入的是带有不是变量的表达式(如a+1),则取表达式计算结果的类型

int i=42;
decltype(i+2)  b; //加法的结果时int,所以b是未初始化的int

(5)如果传入的时变量组成的表达式(如a+b),则返回引用类型

(6)如果传入的是(),则返回引用类型,不管()里的时什么如decltype((a)),返回的引用类型

(7)传入的如果时解引用操作,返回的数据类型是引用类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值