我发现了一个令人困惑的事情"使用"关键词。如果我使用类或结构,那么在同一名称空间中使用该类或结构作为参数的函数是不必要的。像下面的代码一样。
namespace A
{
struct testData
{
int x;
};
int testFunc(testData data)
{
return data.x;
}
}
#include <cstdio>;
using A::testData;
int main()
{
testData test = { 1 };
printf("%d", testFunc(test));
return 0;
}
我认为我不应该被允许使用testFunc(),因为我只使用&#34;使用&#34; testData的关键字。但是,这些代码工作正常。
你能否告诉我为什么这样做?
答案 0 :(得分:9)
using
的工作原理是正确的。
但是你忘记了一件事:依赖于参数的查找。编译器可以通过提供的testFunc
参数查看test
。