我发现关于"使用"关键字的一个令人困惑的事情.如果我使用类或结构,那么就没有必要在同一名称空间中使用函数,该函数将该类或结构作为参数.像下面的代码.
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;
}
Run Code Online (Sandbox Code Playgroud)
我以为我不应该被允许使用testFunc(),因为我只对testData使用"using"关键字.但是,这些代码工作得很好.
你能告诉我为什么这样做吗?
你的工作方式是正确的using.
但是你忘记了一件事:依赖于参数的查找.编译器可以testFunc通过test提供的参数查看.
见http://en.cppreference.com/w/cpp/language/adl
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |