【问题标题】:What exactly does "using" keyword do in c++? [duplicate]“using”关键字在 C++ 中究竟做了什么? [复制]
【发布时间】:2016-06-23 14:25:14
【问题描述】:

我发现关于“使用”关键字的一个令人困惑的事情。如果我确实使用了一个类或结构,那么就没有必要在同一个命名空间中使用以该类或结构作为参数的函数。就像下面的代码一样。

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(),因为我只对 testData 使用“using”关键字。但是,这些代码可以正常工作。

你能告诉我为什么会这样吗?

【问题讨论】:

标签: c++


【解决方案1】:

using 的工作方式是正确的。

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

http://en.cppreference.com/w/cpp/language/adl

【讨论】:

  • 哦,我明白了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2018-03-23
  • 2019-02-15
  • 2015-01-10
  • 2015-09-15
  • 2011-06-18
相关资源
最近更新 更多