c++ auto关键字介绍

基础概念

auto关键字在C版本就已经引入了,但是他的含义与编译器的默认规则一样,一般用于定义变量时使用,但是写与不写没有什么区别,所以显的比较鸡肋;于是是c++ 11版本对其引入了新的概念:类型推导。

简单理解就是用户定义变量时可以不写明具体的变量类型名称,由编译器完成类型的推导工作,从这个是角度说c++还是必须要指明类型的,不过有的工作可以由编译器帮助我们完成了。

auto a = 10;  //a被编译器推导为int类型,写代码时为了方便可以直接auto

使用限制

  • 使用auto关键字修饰的变量一定要进行初始化,否则编译器无法完成推导工作

  • 由第一条可以得知auto关键字不可以修饰类的非静态数据成员,因为类的非静态成员可以在声明时初始化,进行类型推导。

  • auto关键字也不可以修饰函数参数,因为函数参数定义时是虚参,只发生函数调用时才会有实参进行复制,可以理解函数参数就是占位符。

  • auto关键字不能修饰数组

总结:只有声明时触发内存操作的情况才可以使用auto关键字修饰

使用场景:

  • 修饰stl容器的迭代器,正常编写迭代器时需要写很长,但是使用auto关键字可以很简洁。

std::vector v;
std::vector::iterator it = v.begin(); //正常写法
auto it = v.begin(); //是不是特别方便
  • 泛型编程中使用,无论是函数模板还是类模板使用时都必须进行实例化,即在编译阶段类型都是固定的,所以在这些类型固定的情况下可以在泛型编程的实现中使用该关键字。

你可能感兴趣的:(c++,c++)