这是一个有效的代码,即使 max ,一个全局变量和 max(int,int),命名空间内的一个函数之间存在冲突STD
为什么没有错误?
using namespace std;
int max;
int main()
{
int c;
c=max;
//c=max(5,3);
}
答案 0 :(得分:6)
您还没有包含<algorithm>
或可能声明std::max
的任何其他标头,因此没有冲突。您的程序只声明一个名为max
的实体。
如果我包含该标题,由于含糊不清,我得到预期的错误:
test.cpp: In function ‘int main()’:
test.cpp:8:5: error: reference to ‘max’ is ambiguous
c=max;
解决方案是不将std
转储到全局命名空间中,从而使命名空间的整个目的无效。