如何继承静态成员?
Posted
技术标签:
【中文标题】如何继承静态成员?【英文标题】:How inherit static members? 【发布时间】:2014-01-19 22:55:42 【问题描述】:我正在努力让我的派生类按照我的意愿继承静态成员。
class Base
public:
static int member;
;
class Derived : Base
;
Derived::member = 2;
Base::member = 0;
因此:Derived::member == 0;
如何实现 Derived::member == 2
的模式?
【问题讨论】:
同时在Derived
上声明static int member
。当然,这对于一个可能不存在的问题来说是一个糟糕的解决方案。
duplicate
在从 Base 派生的每个类中声明相同的静态变量似乎不是很“面向对象”。
【参考方案1】:
静态成员不能被继承,因为它们属于声明它们的类(因为它们实际上只是具有一些更高级访问权限的全局变量),但是您的派生类仍然可以访问它们而无需编写Base::
(当然它们必须至少是protected
)。访问也意味着您可以设置它们。
【讨论】:
【参考方案2】:您不能继承基类的静态成员变量,因为它们属于类,而不仅仅是类的特定实例。所以所有基类和派生类(以及它们的实例)都将共享同一个静态成员变量,并且所有基类和派生类(以及它们的实例)都会看到它的任何变化。
【讨论】:
以上是关于如何继承静态成员?的主要内容,如果未能解决你的问题,请参考以下文章