繁体   English   中英

C ++-派生类是否继承基类的静态成员?

[英]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修饰符,否则此属性将被视为私有。 在您的示例中,您没有在其前面加上protectedpublic ,因此将其视为私有的,因此无法在派生类中访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM