auto
1 | auto i = 1; |
auto 和 const 引用
引用字面常量需要手动 const
,引用类型常量就自带 const
了
1 | int i; |
一条auto可以同时定义多个变量,但数据类型只能有一种。
1 | auto x = 3, y = 12, z = 30; //正确,x,y,z为int类型 |
decltype
1 | decltype(表达式1) 变量=表达式2; |
从表达式1的结果类型定义变量,并用表达式2的值初始化量。
当表达式1是变量时,decltype不会忽略顶层const,其结果是定义与表达式1相同类型的变量(包括顶层const和引用在内)。 不懂
用双重括号把表达式括起来时,定义的一定是引用。而用单括号时,只有当变量本身是引用时,定义的才是引用。
decltype 和 const 引用
引用字面常量和常量表达式需要手动 const
,引用类型常量就自带 const
了
样例:
1 | int i = 10, j,*p=&i,&r=i; |
atuo decltype 和 数组
在处理数组的问题上,auto将对象定义为指向数组第一个元素类型的指针,decltype采用与数组完全相同的类型变定义数组。
1 | int a[] = {1,2,3,4,5}; |