出乎意料C++
-
类型 decltype
int i = 4;
decltype (++i) v8 = i;
请问 : v8 的类型是什么?
错误:i 是 int, ++i 还是 int, 所以 v8 也是 int
正确:
前置递增:++i
首先将变量 i
的值增加1,然后返回增加后的引用(即 int&
类型)。
因此,++i
的类型是 int&
,即一个指向整数的引用。
由于 decltype
直接根据表达式来确定类型而不实际执行该表达式,所以 decltype (++i)
的类型就是 ++i
表达式的类型,也就是 int&
。
关键: 理解前置++(++i)的返回值是 i 的引用,后置++(i++)的返回值是和 i 相同的临时变量