c++ - 具有继承的静态变量的行为

标签 c++ static-members

我问这个问题是为了讨论。

假设我有流动的类层次结构

    class  A
    {
    public:
         static int varr;
    }

    class B : public A
    {

    }

    Class C : public A
    {
    }

如果我创建 B b1,b2,b3;C c1,c2,c3;A a1, a2; 的对象>

1. varr 是否会在上述所有对象之间共享,或者不同的对象会有单独的实例?

2.如果 b1 对象改变了它会反射(reflect)给 c1 对象的值。

最佳答案

是的,它将在所有派生类(B,C)和基类(A)的所有实例中共享。

只会为静态对象创建一个实例,并且在所有地方都会引用该对象。因此,如果您在一个地方进行更改,则意味着更改将反射(reflect)在其被引用的所有位置。

关于c++ - 具有继承的静态变量的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5817200/

相关文章:

java - 为什么用某些编译器编译的程序可以被反编译而其他的(实际上)不能?

java - 无法访问另一个包的类的静态变量

javascript - 如何在 JavaScript 中为 namespace 中的对象创建静态成员?

C++:静态指针、静态对象和动态内存分配

Java静态final字段初始化顺序

c++ - 使用 std c++11 智能指针转换为非标量类型

c++ - 向所有客户端发送消息

c++ - openCV AdaptiveThreshold 与 Otsu 阈值。投资返回率

c++ - 为什么 <list> 元素会在使用 malloc() 内存的对象中导致段错误

ada - 成员值的静态引用 - Ada