在下面的示例中,
我们看到有一个局部变量与全局变量同名。如果执行以下程序,则输出为:
#include <iostream> using namespace std; //全局变量 int var = 10; int main(){ //局部变量 //外部范围 int var = 5; { //内部范围 int var = 1; cout << "var(inner scope): " << var << endl; } cout << "var(outer scope): " << var << endl; return 0; }
输出:
var(inner scope): 1 var(outer scope): 5
在上面的示例中,我们看到全局变量也被声明为局部变量,这就是为什么它采用局部范围值的原因。为确保使用全局范围值,我们需要使用范围解析运算符来填充全局范围值。
下面是修改后的版本:
#include <iostream> using namespace std; //全局变量 int var = 10; int main(){ //局部变量 //外部范围 int var = 5; { //内部范围 int var = 1; cout << "var(inner scope): " << var << endl; //使用范围解析运算符访问全局值 cout << "var(global value in inner scope): " << ::var << endl; } cout << "var(outer scope): " << var << endl; //使用范围解析运算符访问全局值 cout << "var(global value in outer scope): " << ::var << endl; return 0; }
输出:
var(inner scope): 1 var(global value in inner scope): 10 var(outer scope): 5 var(global value in outer scope): 10