将变量声明为全局变量然后将变量声明为本地 - 阴影 -

时间:2017-08-20 17:10:58

标签: c++ global-variables

将变量声明为全局变量然后将其重新声明为本地变量是什么意思:

int a = 0;
int main()
{
    int a = 7;
    return 0;
}

我在参考文献中看到了这个例子,但我不明白。请考虑一下我是用C ++编程的初学者

2 个答案:

答案 0 :(得分:4)

这意味着,如果您仅使用main,则在a方法中,您将引用在该方法中声明的那个,因为它会隐藏global one。要访问global one中的main,您需要通过::a进行访问。在其他方法中,如果您将使用a,则将引用该文件中每个方法的global。范围的工作方式如下,如果找不到变量,它会尝试在外部范围内查找,依此类推到全局范围。

避免全局变量的建议

答案 1 :(得分:1)

您需要了解变量的范围。只要在花括号内引用变量,方法/花括号中定义的变量就是有效的。 也就是说,在您的代码中,要访问本地" a",您可以直接使用它&使用全球" a" (在main()之外定义),带有作用域解析运算符(:: a)

的前缀

但是,请避免这样的情况。给出独特的名字。