C++基础:关键字auto

1.类型推到

C++引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能方便获取复杂的类型,而且还能简化书写,提高编码效率

C11中auto成为类型指示符

    auto类型推导:auto定义的变量,可以根据初始化的值,在编译时推导出变量名的类型。

如:

2. auto的推导规则

从上面的示例中可以看到auto的一些使用方法。它可以同指针、引用结合起来使用,还可以带上cv限定符((修饰词),const和volatil限定符的统称)。 

由上面的例子可以看出:

    ip和c的推导结果是很显然的,auto在编译时被替换为int,因此,a和c被推导为int*和int&;

    xp的推导结果说明,其实auto不申明为指针,也可以推导出指针类型;

    d的推导结果说明,当表达式是一个引用类型时,auto会把引用类型抛弃,直接推导为int;

     f的结果可以说明:当表达式带有const(实际上Volatile也会得到同样的结果)属性时,auto会把const属性抛弃掉,推导成non-const int 类型;

    g,h的推导说明:当auto和引用(换成指针在这里也将得到同样的结果)结合时,auto的推导将保留表达式的const属性。

通过上面的一系列示例,可以得到下面这两条规则:

   (1)当不申明为指针或者引用时,auto的推导结果和初始化表达式抛弃引用和cv限定符后类型一致;

   (2)当声明为指针或引用时,auto的推导结果将保持初始化表达式的cv属性。

3. auto作为函数的形参类型 

 

 4. auto的限制:

总结:

1.C11中auto成为类型指示符;

2. auto不能用于函数参数;

3. auto不能用于非静态成员变量;

4. auto无法定义数组;

5. 实例化模板时,不能使用auto作为模板参数。

示例: 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值