究竟是什么"使用"关键字在c ++中做什么?

时间:2016-06-23 14:25:14

标签: c++

我发现了一个令人困惑的事情"使用"关键词。如果我使用类或结构,那么在同一名称空间中使用该类或结构作为参数的函数是不必要的。像下面的代码一样。

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的关键字。但是,这些代码工作正常。

你能否告诉我为什么这样做?

1 个答案:

答案 0 :(得分:9)

using的工作原理是正确的。

但是你忘记了一件事:依赖于参数的查找。编译器可以通过提供的testFunc参数查看test

请参阅http://en.cppreference.com/w/cpp/language/adl