C++ 关键字auto
使用了 auto 关键字以后,编译器会在编译期间自动推导出变量的类型,这样我们就不用手动指明变量的数据类型了。
注意:auto 仅仅是一个占位符,在编译器期间它会被真正的类型所替代。或者说,C++ 中的变量必须是有明确类型的,只是这个类型是由编译器自己推导出来的。
auto 除了可以独立使用,还可以和某些具体类型混合使用
auto n = 10;
auto * p = &n;
auto & n3= n;
const auto n4 = n;
const auto & n5 = n;
auto n6= n4; //当类型不为引用时,auto 的推导结果将不保留表达式的 const 属性;
auto n7= n5 ; //当类型为引用时,auto 的推导结果将保留表达式的 const 属性。
auto 的限制
- 使用 auto 的时候必须对变量进行初始化。
- 连续定义多个变量时前后必须保持一致。
- auto 不能作用于类的非静态成员变量。
- auto 关键字不能定义数组。
- auto 不能作用于模板参数
auto 的应用
- 使用 auto 定义迭代器
int main (void){
vector< int > v;
for(auto n : v){
cout << n << endl;
}
return 0;
}
- auto 用于泛型编程
class clazz{
public:
static int get(void){
return 1;
}
};
class clazz2{
public:
static char* get(void){
return "2";
}
};
template <typename T>
void func(void){
auto val = T::get();
cout << val << endl;
}
int main(void){
func<clazz>();
func<clazz2>();
return 0;
}
总体来说就是可以简化代码,在一些生命周期比较短,使用方法较简单的,理解含义不复杂的时候推荐使用。