use*_*747 8 c++ scope namespaces c++11
ISO草案N3290:不合格名称查询:第3.4.1节,第14段:
如果命名空间的变量成员在其命名空间的范围之外定义,则会查找成员定义中出现的任何名称(在declarator-id之后),就好像成员的定义出现在其名称空间中一样.
例如:
namespace N {
int i = 4;
extern int j;
}
int i = 2;
int N::j = i; // N::j == 4
Run Code Online (Sandbox Code Playgroud)
除了使用'extern'关键字之外,还有其他可能证明这一点吗?
你可以提供一些其他的例子......除了extern
另一个不使用extern关键字的示例:
//demo.cpp
int i = 100;
namespace N
{
int i = 200;
struct A
{
static int m;
};
}
int N::A::m = i; //i is 100 or 200?
int main()
{
cout << N::A::m << endl; //what will it print?
}
Run Code Online (Sandbox Code Playgroud)
输出:
200
Run Code Online (Sandbox Code Playgroud)
在线演示: http: //www.ideone.com/pRVAb
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |