"::'变量'"指的是什么?

pan*_*kaj 4 c++ scope

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

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

它输出"3010".":: i"似乎指的是全球宣言.这究竟是什么意思?

Alo*_*ave 9

它被称为限定名称查找.
它引用了i在全局范围内声明的变量.
简单来说,它意味着不引用局部变量(i如果有的话),而是引用i全局范围.

每当在本地范围内具有相同的命名变量时,在引用变量名时,首选项将赋予本地范围中的变量.这意味着在您的程序中,i本地范围内部{ }隐藏了所有其他变量,i即名称(i=20以及i=10).因此,要引用i全局范围内的范围,请使用::范围解析运算符.=