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的注意事项
- 不能再当作函数参数
- 不能用于类中不是静态成员的变量
- 不能定义数组
- 不能用于模板参数
- 在定义的时候要初始化
test<auto>();//这种写法是错误的