C++11


auto关键字

auto用于类型推导,auto仅仅只是一个占位符,在编译的时候被真正的类型代替,所以在定义auto类型的时候要初始化

你可以这样使用auto

int n=1;
auto *p=&n,a=2;

这样一回定义了一个整形指针还有一个整形变量

但是你不能这样定义

auto a=1,b=2.0,c='o';

看看报错

从报错就可以了解到auto使用一回定义多个变量也是要同类型的。

auto的使用

auto定义迭代器

一般定义迭代器

vector<int>a;
vector<int>::iterator i = a.begin();

使用auto

vector<int>a;
auto i=a.begin();

也可以使用在for循环中

int a[10];
for(int i=0;i<10;i++){
	cin>>a[i];
}
for(int i=0;i<10;i++){
	cout<<a[i];
}

用auto

int a[10];
for(auto &i:a){
	cin>>i;
}
for(auto i:a){
	cout<<i;
}

还是用简单很多的,注意在输入的循环中要&。

用于泛式编程

对于无法确定类型的使用

#include<iostream>
class A{
public:
  static int get(){
    return 100;
  }
};
class B{
public:
  static double get(){
    return 2.29;
  }
};
template <typename T>
void test(){
  auto a=T::get();
  std::cout<<a<<std::endl;;
}
int main(){ 
  test<A>();
  test<B>();
  return 0;
}/*  */

auto的注意事项

  1. 不能再当作函数参数
  2. 不能用于类中不是静态成员的变量
  3. 不能定义数组
  4. 不能用于模板参数
  5. 在定义的时候要初始化
test<auto>();//这种写法是错误的

文章作者: zhang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zhang !
  目录