关于全局变量

时间:2018-05-08 17:47:35

标签: c++ global-variables

考虑以下两个代码段:

案例I:

class A {
    int globalOrLocal;
    funcA1() {...}
    funcA2() {...}
}

案例II:

int globalOrLocal;
class B {
    funcB1() {...}
    funcB2() {...}
}

在上述案例I和案例II之外,变量globalOrLocal的声明可以称为全局?我认为两者都是,因为它们是在所有函数之外定义的,因为这个变量将存储在堆上。但我不确定。在线资源提供了一些简单的例子,没有任何类的参与。有人可以帮我解决疑问吗?

感谢。

1 个答案:

答案 0 :(得分:1)

如果案例I globalOrLocal不是全局变量。它是class A的私有成员变量。将为您构造的A的每个实例构建一个实例,并在销毁时将其与A一起销毁。

在案例II中,您(可能)有一个全局变量。取决于是否有一个匿名命名空间包装它或另一个包含它的类和类A作为成员/嵌套类。