【发布时间】:2016-07-12 03:25:45
【问题描述】:
我刚刚经历了一个案例,我不需要在命名空间中声明的函数中为命名空间添加前缀
考虑一下:
namespace fs
{
void ftest();
typedef int uint;
}
void fs::ftest()
{
uint p = 2; // no prefix fs:: needed
}
这实际上并没有让我感到震惊,但我想有一些见解:为什么 in 实际上有效?显然这不是 koenig 查找。
我正在使用 VS 2013
【问题讨论】:
-
因为它在
fs::ftest()里面 -
什么让您感到惊讶?命名空间中的函数可以访问同一命名空间中的所有内容(非常类似于类中的函数可以访问该类的成员)。这是不言自明的。或者你想要标准的报价?
-
好吧,我什至不知道,所以我想这是合乎逻辑的。是的,我想引用标准
-
该过程称为非限定名称查找。不是标准报价,但您可以了解它的工作原理here。
-
谢谢,赞成,因为你是第一个给出进程名称的人
标签: c++ namespaces