C++ 静态成员变量不能被子类继承。静态成员变量属于类本身,而不是类的实例。这意味着它们与整个类相关联,而不是与类的特定对象相关联。
当一个类定义了静态成员变量时,该变量在所有类的实例之间共享。子类不会继承父类的静态成员变量,但可以在子类中声明自己的静态成员变量,或者隐藏父类的静态成员变量(如果需要)。
以下是一个示例,说明了静态成员变量的继承行为:
#include <iostream>
class Base {
public:
static int staticVar;
};
int Base::staticVar = 10;
class Derived : public Base {
public:
static int staticVar;
};
int Derived::staticVar = 20;
int main() {
std::cout << "Base staticVar: " << Base::staticVar << std::endl; // 输出 10
std::cout << "Derived staticVar: " << Derived::staticVar << std::endl; // 输出 20
return 0;
}
在这个例子中,Base
类有一个静态成员变量 staticVar
,其值为 10。Derived
类也有一个名为 staticVar
的静态成员变量,其值为 20。尽管 Derived
类是从 Base
类派生的,但它并没有继承 Base
类的静态成员变量。相反,它定义了自己的静态成员变量,覆盖了父类的静态成员变量。