c++ - "::' 变量'"指的是什么?

标签 c++ scope

::i 在下面的程序中是什么意思?

#include<iostream>
using namespace std;
int i = 10;
int main(){
   int i = 20;
   {
   int i = 30;
   cout << i << ::i <<endl;
   }
}

它输出“3010”。 "::i"似乎指的是全局声明。具体是什么意思?

最佳答案

它被称为合格名称查找。
它引用在全局范围内声明的变量i
简单地说,这意味着不要引用局部变量 i(如果有),而是在全局范围内引用 i

只要在局部作用域中有相同命名的变量,当引用变量名时,优先考虑局部作用域中的变量。这意味着在您的程序中,局部作用域 { } 中的 i 隐藏了所有其他名为 i 的变量,即那些(i=20 以及 i=10)。因此,要引用全局范围内的 i,您可以使用 :: 范围解析运算符。=

关于c++ - "::' 变量'"指的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065637/

相关文章:

java - 我相信由于范围的原因,这并没有按照我想要的方式工作。有什么办法可以让我完成这项工作吗?

javascript - 将父作用域添加到匿名函数 - JavaScript 到 Angular 2

javascript - Javascript 中的埃拉托色尼筛法?

python - 尝试更新 tkinter 类中的标签

c++ - 是否必须在同一个文件中声明 C++ 内联函数?

c++ - 计算多个单词出现的问题

c++ - 如何将一个类的成员函数用作另一个类的友元函数?

c++ - 可克隆类层次结构和 unique_ptr

c++ - 如何声明已在类中声明的 char 变量的 Char 数组?

javascript - 更改自己对象中函数内对象的属性