我只是在浏览C ++代码而且我注意到了一些东西。在源文件main.cpp
中std::cout << converter();
然后我找了转换器定义。没有命名空间和类名。然后我在tool.cpp中看到了
using namespace Ccon::converter;
该定义位于Ccon.cpp文件中。
为什么main.cpp可以调用converter()
?
请告知。
由于
答案 0 :(得分:-2)
请参阅此链接以查找依赖于参数的名称:http://en.wikipedia.org/wiki/Argument-dependent_name_lookup
当编译器无法找到不合格的converter()
时,它将查找可用的命名空间,并在名称和签名匹配时使用它们。
在这种情况下,main.cpp包含我想要的Ccon.h头文件,它定义了这个命名空间,因此它会查找带有void参数的converter()
。