C++ Primer第五版总结之auto、decltype

本文详细探讨了C++中auto和decltype两种类型指示符的使用和区别。auto根据初始值推断变量类型,但忽略顶层const,不返回引用,处理数组时返回指针。而decltype通过分析表达式获取类型,不计算表达式值,能返回引用类型,处理数组时不改变数组类型。此外,decltype在处理多层括号的变量时,结果有所不同。了解这些差异对于C++编程至关重要。
摘要由CSDN通过智能技术生成

auto类型说明符

  1. 编绎器通过初始值推算变量的类型,因此auto定义的变量必须有初始值。

  2. auto不返回引用类型
    ①引用类型初始化,参与初始化的是引用对象的值。
    ①编绎器以引用对象的数据类型作为auto的类型。

  3. auto一般忽略顶层const,保留底层const,保留指针的底层const。

  4. auto处理数组,ia为数组名,auto(ia)返回类型为指针,指向类型为数组元素类型。

decltype类型指示符

  1. 编绎器分析表达式并得到它的类型,不实际计算表达式的值。
    ①如果表达式为变量,返回变量类型(包括顶层const和引用类型)。
    ②如果不是变量则返回表达式结果对应的类型。
    ③如果表达式内容是解引用操作,同样返回引用类型。

  2. 引用一般作为绑定对象同义词出现,decltype处理是例外,可以返回一个引用类型。
    ①decltype((variable))(注意是双层括号)的结果永远是引用。
    ②decltype(variable)的结果只有当variable本身是一个引用时才是引用。

  3. decltype处理数组,ia为数组名,decltype(ia)返回类型为数组,与ia相同数组类型。

  4. decltype返回指向数组的指针。
    ①odd为数组名,decltype(odd) *arrptr (int i){};推断函数返回类型arrptr为指向数组指针。
    ②decltype处理函数名与数组名相同,函数名不可转换成指针,返回的是函数类型。

不同

  1. auto忽略顶层const,不返回引用;decltype不忽略顶层const,可返回引用。

  2. auto处理数组名返回指针;decltype处理数组名返回数组。

  3. decltype处理函数名,返回函数类型。

  4. decltype处理变量多重括号结果不同。

  5. auto由初始值推断类型,必须初始化;deltype得到表达式类型,不计算表达式结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值