c++ - 将变量声明为全局变量,然后声明为局部变量 -Shadowing-

标签 c++ global-variables

像这样声明一个变量为全局变量然后重新声明为局部变量是什么意思:

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

我在引用资料里看到这个例子,但是没看懂。请考虑到我是 C++ 编程的初学者

最佳答案

这意味着在您的 main 方法中,如果您只使用 a,您将引用在该方法中声明的那个,因为它隐藏了 全局一个。要访问main 中的global one,您需要通过::a 访问。在其他方法中,如果您将使用 a,您将引用该文件中每个方法的 global。作用域是这样工作的,如果它没有找到变量,它会尝试在外部作用域中寻找,依此类推到全局作用域。

一个建议避免使用全局变量

关于c++ - 将变量声明为全局变量,然后声明为局部变量 -Shadowing-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45784781/

相关文章:

c++ - 如何比较函数对象

python - OpenCV - 检查两个图像是否 100% 相同的最快方法

dependency-injection - Zend Framework 2 中的应用程序范围变量?

c - 假设 foo.c 包含全局定义 int secret = 4;

c++ - double 类型的舍入问题

c++ - asio 的多套接字架构

gcc - 为什么 gcc 不会编译未初始化的全局常量?

javascript - 声明和未声明变量的影响

c++ - 删除指向全局变量的指针?

c++ - 如何在两个不同的函数c++中访问动态数组