gpt4 book ai didi

c++ - 如果多个类有一个共同的静态变量,它们是否共享(在同一范围内?)

转载 作者:IT老高 更新时间:2023-10-28 21:44:59 26 4
gpt4 key购买 nike

我有以下示例代码:

class A {
public:
static int a;
};
int A::a = 0;

class B {
public:
static A a1;
};
A B::a1;

class C {
public:
static A a1;
};
A C::a1;


int main(int argc, const char * argv[]) {
C::a1.a++;
B::a1.a++;
std::cout << B::a1.a << " " << C::a1.a << std::endl;
return 0;
}

B 类和 C 类将 A 类作为静态成员变量。

我预计程序会打印“1 1”,但它会打印“2 2”。

如果多个类有一个共同的静态变量,它们是否共享(在同一范围内?)

最佳答案

static members属于类,它与对象无关。

Static members of a class are not associated with the objects of the class: they are independent objects with static storage duration or regular functions defined in namespace scope, only once in the program.

对于您的代码,只有一个 A::a,它独立于 B::a1C::a1 ( A 类的对象)。所以 B::a1.aC::a1.a 都指 A::a

关于c++ - 如果多个类有一个共同的静态变量,它们是否共享(在同一范围内?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40098470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com