gpt4 book ai didi

c++ - "using function-name"只能隐藏普通功能?

转载 作者:太空狗 更新时间:2023-10-29 21:45:23 25 4
gpt4 key购买 nike

好像“using function-name”只能隐藏普通函数,不能隐藏操作数的友元函数或操作数同一命名空间的函数。我的理解正确吗?

示例 1:

void swap(int)
{

}

void foo()
{
using std::swap;
int i=10,j=20;
swap(i); //compile error ,because std::swap hidden void swap(int)
}

示例 2:

class Cat {
friend void swap(Cat&, Cat&);
};
void swap(Cat &lhs, Cat &rhs)
{
cout<<"call cat friend swap"<<endl;
}

class Foo
{
public:
Cat h;
};

void swap(Foo &lhs, Foo &rhs)
{
using std::swap;
swap(lhs.h, rhs.h); //compile ok. will print out
//call cat friend swap
}

最佳答案

你的观察是正确的。

using 在本地级别引入了一个名称,它将名称隐藏在封闭的命名空间中。但是名称搜索也使用依赖于参数的查找,它仍然可以工作(并且也可能找到一些隐藏的名称)。如果你想找到 std::swap 而不是别的,那么写 std::swap(i);

关于c++ - "using function-name"只能隐藏普通功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com