【发布时间】:2021-11-10 00:11:08
【问题描述】:
就像我们可以在命名空间中声明和在全局命名空间中定义一样,像这样:
namespace B{
void func();
}
void B::func(){
std::cout<<"abcdef\n";
}
int main(){
B::func();
}
我们必须使用B:: 调用它,因为它在 B 命名空间中声明 根据Forward declaring classes in namespaces 的答案。
void func();
namespace B{
void ::func(){
}
}
using namespace B;
int main(){
func();
}
根据这些答案,我们不能这样做,因为编译器不知道定义在哪里。
是否可以安全地说“全局命名空间是特殊的,因为编译器总是检查它,这就是为什么在全局命名空间中定义它是安全的。”?
我们可以做一些事情来使用户定义的命名空间像全局命名空间一样特殊,或者做一些事情让编译器知道定义是“here!!”吗?
【问题讨论】:
-
第一个和第二个答案取决于您的排序。其他用户可能会有所不同。带有“绿色勾号”的那个是公认的答案。虽然也接受的答案可以改变。最好包含指向答案的链接。答案下方:分享
-
请每个问题回答一个问题。
>用于引号,最好只用于引号
标签: c++ namespaces declaration qualified-name