gpt4 book ai didi

c++ - 基类中的静态变量是否由所有派生类共享?

转载 作者:IT老高 更新时间:2023-10-28 14:00:38 25 4
gpt4 key购买 nike

如果我有类似的东西

class Base {
static int staticVar;
}

class DerivedA : public Base {}
class DerivedB : public Base {}

DerivedADerivedB 会共享相同的 staticVar 还是各自拥有自己的?

如果我希望他们每个人都有自己的,你会建议我做什么?

最佳答案

它们将共享相同的 staticVar 实例。

为了让每个派生类都有自己的静态变量,您需要声明另一个具有不同名称的静态变量。

然后,您可以在基类中使用一对虚拟函数来获取和设置变量的值,并在每个派生类中覆盖该对,以获取和设置该类的“本地”静态变量。或者,您可以使用返回引用的单个函数:

class Base {
static int staticVarInst;
public:
virtual int &staticVar() { return staticVarInst; }
}
class Derived: public Base {
static int derivedStaticVarInst;
public:
virtual int &staticVar() { return derivedStaticVarInst; }
}

然后您将其用作:

staticVar() = 5;
cout << staticVar();

关于c++ - 基类中的静态变量是否由所有派生类共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1390913/

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