Note这个问题最初发布于 2009 年,在 C++11 被批准之前,在auto
关键字发生了很大的变化。提供的答案涉及onlyC++03 的含义auto
-- 这是指定的存储类 -- 而不是 C++11 的含义auto
——这是自动类型推导。如果您正在寻找有关何时使用 C++11 的建议auto
,这个问题与那个问题无关。
在很长一段时间里,我认为没有理由使用static
C 中的关键字,因为在块作用域之外声明的变量是隐式全局的。然后我发现将变量声明为static
在块作用域内将给它永久的持续时间,并且在块作用域之外(在程序作用域中)声明它将给它文件作用域(只能在该编译单元中访问)。
因此,这只剩下一个我(可能)尚未完全理解的关键字:auto
关键词。除了“局部变量”之外,它还有其他含义吗?无论您想在何处使用它,它所做的任何事情都不是隐式为您完成的吗?如何auto
变量在程序范围内的行为?什么是一个static auto
文件范围内的变量?该关键字是否还有其他目的只是为了完整性而存在?
在 C++11 中,auto
具有新的含义:它允许您自动推断变量的类型。
为什么它有用?让我们考虑一个基本的例子:
std::list<int> a;
// fill in a
for (auto it = a.begin(); it != a.end(); ++it) {
// Do stuff here
}
The auto
那里创建了一个类型的迭代器std::list<int>::iterator
.
这可以使一些非常复杂的代码更容易阅读。
另一个例子:
int x, y;
auto f = [&]{ x += y; };
f();
f();
在那里,auto
推导了在变量中存储 lambda 表达式所需的类型。
维基百科有很好的对该主题的报道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)