首页 > 解决方案 > 关于全局变量

问题描述

考虑如下两个代码片段:

案例一:

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

案例二:

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

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

谢谢。

标签: c++global-variables

解决方案


如果 IglobalOrLocal不是全局变量。它是 的私有成员变量class A。将为您构造的每个实例构造它的一个实例,A并且A在它被销毁时将被销毁。

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


推荐阅读