gpt4 book ai didi

c++ - 为什么我必须为嵌套匿名命名空间中的函数指定外部命名空间?

转载 作者:搜寻专家 更新时间:2023-10-30 23:56:57 24 4
gpt4 key购买 nike

给定一个命名空间 A,里面是一个匿名命名空间,有函数 f 和类 X,也有函数 f: 为什么在从 A::X 调用匿名 f 时必须指定外部命名空间 A::作为限定符::f?

举个简单的例子:

#include <iostream>

using namespace std;

namespace A {

namespace {
int f( int i ) { return i; }
}

class X {
public:
static int f() { A::f( 10 ); }
};

}


int main()
{
cout << A::X::f() << endl;

return 0;
}

最佳答案

因为,在X::f范围内,非限定名称f指的是X::f,而不是任何其他f。在作用域内声明的名称将隐藏外部作用域中具有相同名称的任何内容。

关于c++ - 为什么我必须为嵌套匿名命名空间中的函数指定外部命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487468/

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