关于全局变量

问题描述 投票:-2回答:1

考虑两个代码片段,如下所示:

案例I:

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

案例二:

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

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

谢谢。

c++ global-variables
1个回答
1
投票

在案例中,globalOrLocal不是全局变量。它是class A的私有成员变量。它将为你构造的每个A实例构建一个实例,当它被销毁时将与A一起被销毁。

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

© www.soinside.com 2019 - 2024. All rights reserved.