在函数中打印全局变量的替代方法,而不是:: operator

时间:2013-12-27 08:35:38

标签: c++ global-variables

请参阅代码段:

#include <iostream>

using namespace std;
int var = 20;
int main()
{
    int var =8;
    cout << "local var=" << var << "Global var =" << ::var << endl; 
return 0;
}

是否还有其他方法可以打印全局变量,即在main重新初始化的main中有20个?

谢谢,

3 个答案:

答案 0 :(得分:3)

如果不修改cout声明之外的代码,则别无他法。很简单,你可以间接地main访问::var - 通过另一个变量作为var的引用或指针,或复制var的值,或者返回任何函数那些东西等...(与其他一些语言不同,没有可访问的元数据携带包含全局或调用上下文的堆栈帧/局部变量等的对象。)

答案 1 :(得分:3)

你的意思是:

int &p = ::var; // Using a reference

int var =8;

cout << "local var=" << var << "Global var =" << p << endl; //Play with p 

答案 2 :(得分:2)

它还没有被重新初始化&#34;,本地声明只会影响全局声明。您必须使用范围解析运算符。