gpt4 book ai didi

c++ - 理解 C++ 中的命名空间作用域

转载 作者:太空狗 更新时间:2023-10-29 20:43:02 28 4
gpt4 key购买 nike

当我运行下面的代码片段时,输出是a is 6。但是因为我使用了命名空间 n1,它也有名为“a”的变量,所以输出不应该是 a is 5。我错过了什么吗?

#include <iostream>

using namespace std;

namespace n1{
int a = 5;
}

int main(void){
int a = 6;
using namespace n1;
cout<<"a is "<<a<<endl;
return 0;
}

但是如果我在 cout 中使用完全限定名称,即 cout<<"a is "<<n1::a;输出符合预期,即 5. using namespace 的目的是什么?

最佳答案

using 指令提示编译器应该搜索名称 a 的位置。

这样,名称查找将按以下顺序完成:

  • 首先在本地范围内搜索a
  • 如果未找到 a,则在命名空间 n1 中搜索
  • 如果仍然没有找到a,则在全局命名空间中查找

如果没有您提供的 using 指令,则不会执行第二步。

在你的例子中,因为实际上有一个名为 a 的变量(但它可以是任何东西,我们谈论的是 names),所以它不会去任何进一步。

关于c++ - 理解 C++ 中的命名空间作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16776293/

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