【发布时间】:2018-06-29 14:59:33
【问题描述】:
你能解释一下为什么这段代码可以工作并打印 16;
#include <iostream>
namespace X {
int p = 5;
}
namespace Y {
int p = 16;
using namespace X;
}
int main()
{
std::cout << Y::p;
}
以及为什么这段代码会抛出多重声明的错误
#include <iostream>
namespace X {
int p = 5;
}
namespace Y {
int p = 16;
using X::p;
}
int main()
{
std::cout << Y::p;
}
我听说 using 指令不仅仅是使用任何名称的声明的过程,因为它的工作方式似乎不同
但是我不明白为什么,你能详细解释一下吗??
同样,这个打印 16 的效果很好,如果我只用 X::p 的声明替换使用指令,它会抛出相同的错误
#include <iostream>
namespace X {
int p = 5;
}
int p = 16;
using namespace X;
int main()
{
std::cout << ::p;
std::cout << "\n";
return 0;
}
【问题讨论】:
标签: c++ scope namespaces using