【发布时间】:2011-02-17 19:01:36
【问题描述】:
在 C++ 中,shadowed 变量名的作用域解析(“优先顺序”)是什么?我似乎在网上找不到简明的答案。
例如:
#include <iostream>
int shadowed = 1;
struct Foo
{
Foo() : shadowed(2) {}
void bar(int shadowed = 3)
{
std::cout << shadowed << std::endl;
// What does this output?
{
int shadowed = 4;
std::cout << shadowed << std::endl;
// What does this output?
}
}
int shadowed;
};
int main()
{
Foo().bar();
}
我想不出变量可能会发生冲突的任何其他范围。如果我错过了,请告诉我。
在bar 成员函数中所有四个shadow 变量的优先级顺序是什么?
【问题讨论】:
-
您可以在
bar()内有一个代码块,它也声明shadowed。 -
为
bar()中的代码块添加了大小写。 -
@Ignacio:你的意思是说“范围分辨率”是关于阴影的“优先顺序”的正确术语吗?
标签: c++ variables scope shadowing scope-resolution