2.5.3练习

 

  1.  a=3,b=4
  2. c=3
  3. d=3
  4. c=4
  5. d=4,a=4

c为int,值为3,d的类型为int&,值为3,b的值一直不变,a=b作为参数,编译器分析表达式并得到它的类型作为d的推断,但不实际计算该表达式。

  1.  auto类型说明符用编译器计算变量的初始值来推断其类型,而decltype虽然也让编译器分析表达式并得到它的类型,但是不实际计算表达式的值。
  2. 编译器推断出来的auto类型有时候和初始值的类型不完全一样,编译器会适当地改变结果类型使其更符合初始化规则。auto一般会忽略掉顶层const,而把底层const保留下来,decltype会保留变量地顶层const。
  3. 与auto不同,decltype的结果类型与表达式形式密切相关,如果变量名加上一对括号,则得到的类型与不加括号时会有不同。如果decltype使用的是一个不加括号的变量,则得到的结果就是该变量的类型。如果给变量加上一层或多层括号,则编译器将推断引用类型。
posted @ 2019-04-06 20:29  CodeWithMe  阅读(135)  评论(0)    收藏  举报