auto关键字使用

Posted tingweichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了auto关键字使用相关的知识,希望对你有一定的参考价值。

auto类型变量——根据初始值推断真实的数据类型。

有些时候并不能很确定一个变量应该具备的数据类型,例如:将一个复杂表达式的值赋给某个变量,此时并不能很明显的确定这个值所具备的数据类型。此时auto关键字可以派上用场。auto存储类型说明符声明了一个自动变量,auto对象和变量被存储在栈中,它的生命周期仅存在于它的声明所在的块(block)中,即一个只在块运行时有效的变量。一个auto变量仅在声明它的块内是可见的。auto对象和变量对外部模块都是不可见的。auto变量的声明能包含初始化。因为有auto存储类型的变量并不自动的初始化,应该在声明时显式的初始化它们,或在同一个块内赋给它们初始值。未初始化的auto变量的值是未定义的。

在C++ 11中,使用auto定义的变量不能使用其它类型修饰符修饰,该变量的类型由编译器根据初始化数据自动确定。auto类型的变量必须进行初始化.

1、使用auto关键字的变量必须有初始值。

2、可以使用valatile,*(指针类型说明符),&(引用类型说明符),&&(右值引用)来修饰auto关键字。
3、函数参数和模板参数不能被声明为auto。

4 、使用auto关键字声明变量的类型,不能自动推导出顶层的CV-qualifiers和引用类型,除非显示声明。使用auto关键字进行类型推导时,如果初始化表达式是引用类型,编译器会去除引用,除非显示声明。
使用auto使用auto关键字进行类型推导时,编译器会自动忽略顶层const,除非显示声明。

5、对于数组类型,auto关键字会推导为指针类型,除非被声明为引用。



以上是关于auto关键字使用的主要内容,如果未能解决你的问题,请参考以下文章

Alfred常见使用

使用范围 for 循环而不使用 auto 关键字 c++

C 的“auto”关键字的目标

使用范围for循环而不使用auto关键字c ++

[ 深度解剖C语言 ] 关键字 ---- auto register

深谈auto变量