首页 > 编程笔记

C++ auto关键字的用法

在 C++11 标准之前,auto 关键字已经存在,其作用是限定变量的作用域。

在 C++11 标准中,auto 被赋予了新的功能,使用它可以让编译器自动推导出变量的类型。示例代码如下所示:
auto x = 10;   //变量x为int类型
在上述代码中,使用 auto 定义了变量 x,并赋值为 10,则变量 x 的类型由它的初始化值决定。由于编译器根据初始化值推导并确定变量的类型,因此 auto 修饰的变量必须初始化。

除了修饰变量,auto 还可以作为函数的返回值,示例代码如下所示:
auto func()
{
    //……功能代码
    return 1;
}
需要注意的是,auto 可以修饰函数的返回值,但是 auto 不能修饰函数参数。

除了修饰变量、函数返回值等,auto 最大的用途就是简化模板编程中的代码,示例代码如下所示:
map<string, vector<int>> m;
for(auto value = m.begin(); value != m.end(); value++)
{
    //……
}
如果不使用 auto,则代码如下所示:
map<string, vector<int>> m;
map<string, vector<int>>::iterator value;
for(value = m.begin(); value != m.end(); value++)
{
    //……
}
此外,在模板编程中,变量的类型依赖于模板参数,有时很难确定变量的类型。

当不确定变量类型时,可以使用 auto 关键字解决,示例代码如下:
template<class T1, class T2>
void multiply(T1 x, T2 y)
{
    auto result = x * y;      //使用auto修饰变量result
} 

优秀文章