[英]C++ - Do derived classes inherit static members of the base class?
我有一个具有成员的基类GameObject
static Cell **grid;
我还有一个派生类Character,它是另一个类Player的基类。 所以我的问题是:GameObject,Character和Player类的所有对象都可以访问同一网格吗?
Player
是 Character
, 是 GameObject
。 是的,他们都可以使用静态grid
。
...当然要遵守访问保护(如Sam所指出的)。 因此,您需要在public
区域或protected
区域内声明grid
才能使此设置为真,此外,您还需要使用protected
模式或public
模式来声明继承:
class GameObject
{
protected:
static Cell **grid;
};
class Character : protected GameObject
{
};
基类的静态类成员是否可用于类层次结构中的直接派生类,最派生类或两者之间的任何其他类的规则取决于:
静态类成员是公共的,受保护的还是私有的。
在继承链中,每个类是将基类继承为公共类,受保护类还是私有类。
因此,您的问题的答案是:取决于。 取决于这些因素。
我相信,除非您明确使用protected修饰符,否则此属性将被视为私有。 在您的示例中,您没有在其前面加上protected或public ,因此将其视为私有的,因此无法在派生类中访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.