[英]Accessing a global variables within nested namespaces
我對 C++ 很陌生,並且在命名空間方面遇到了麻煩。
#include <iostream>
int x = 10;
namespace ns {
int x = 5;
namespace ns_nested {
int z = x; //z is assigned a value of 5??
}
}
int main(){
std::cout << ns::ns_nested::z;
}
這將打印5
。 最初,我認為這是因為我只是將 x 的值從10
更改為5
。
但是,如果我將 x 的第一個聲明更改為const int x = 10
,它仍然會打印5
。
所以,我的問題是雙重的:
我雖然在全局范圍內聲明的變量是......好吧......全局,因為只有一個實例可供所有人使用。 那么,為什么/我如何能夠再次聲明具有相同名稱的變量的實例?
如果我要將z
的值分配給全局聲明的x
值而不是外部命名空間中的值,我該怎么做?
1)我雖然在全局范圍內聲明的變量是......好吧......全局,因為只有一個實例可供所有人使用。 那么,為什么/我如何能夠再次聲明具有相同名稱的變量的實例?
namespace ns {
int x = 5;
namespace ns_nested {
int z = x; //z is assigned a value of 5??
}
}
這里 x 不是全局命名空間,它在命名空間 ns 下
2)如果我將 z 的值分配給全局聲明的 x 值而不是外部命名空間中的值,我該怎么做?
看到這個你可能有想法
#include <iostream>
const int x = 10;
namespace ns
{
int x = 5;
namespace ns_nested
{
int z1 = ::x; //global namespace
int z2 = ns::x; //ns namespace
}
}
int main()
{
std::cout << ns::ns_nested::z1<<std::endl;
std::cout << ns::ns_nested::z2<<std::endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.