c++11 auto 类型说明符详解

当使用 auto 自动推断类型时,需要注意以下几点:一、必须要有初始值一个显而易见的道理,auto 表示编译器根据初始值类型推断声明变量的类型,因此必须要有初始值。二、一条声明语句只能有一种基本类型auto i = 0, *p = &i; // 正确,基本类型是intauto sz = 0, pi = 3.14; // 错误,由sz推断基本类型是int,但pi是double需...
摘要由CSDN通过智能技术生成

当使用 auto 自动推断类型时,需要注意以下几点:

一、必须要有初始值
一个显而易见的道理,auto 表示编译器根据初始值类型推断声明变量的类型,因此必须要有初始值。

二、一条声明语句只能有一种基本类型

auto i = 0, *p = &i; // 正确,基本类型是int
auto sz = 0, pi = 3.14; // 错误,由sz推断基本类型是int,但pi是double

需要特别注意,第一条语句的 * 是从属于p的,表示p是指针,与基本类型无关,基本类型是int。

三、auto 一般会忽略初始值的顶层const属性
所谓顶层const和底层const,是为了研究指针而引入的说法。顶层const属性是指针自身具有const属性;而底层const属性则是指针特有的,指的是指针指向对象具有的const属性。

一般来说,讨论指针以外的对象时,const属性都是指顶层const。引用类型比较特殊,因为引用本身不是对象,而是另一个对象的别名,因此讨论引用的const属性时一定指的是底层const。

auto i = 0;
	
const int ci = i, &cr = ci; // cr是ci的别名
auto b = ci; b++; // b是int,ci的顶层const属性被忽略
auto c = cr; c++; // c是int,cr(即ci)的顶层const属性被忽略
auto d = &i; (*d)+
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值