在C++中,类的继承不会继承静态成员。静态成员属于类本身,而不是类的实例。当你在派生类中声明一个与基类相同的静态成员时,它实际上是在派生类中创建一个新的静态成员,而不是继承基类的静态成员。
以下是一个示例,说明如何在派生类中声明与基类相同的静态成员:
#include <iostream>
class Base {
public:
static int staticMember;
};
int Base::staticMember = 10; // 初始化基类的静态成员
class Derived : public Base {
public:
static int staticMember; // 声明与基类相同的静态成员
};
int Derived::staticMember = 20; // 初始化派生类的静态成员
int main() {
std::cout << "Base static member: " << Base::staticMember << std::endl; // 输出 10
std::cout << "Derived static member: " << Derived::staticMember << std::endl; // 输出 20
return 0;
}
在这个示例中,Base
类有一个名为 staticMember
的静态成员,其值为 10。Derived
类继承自 Base
类,并声明了一个与基类具有相同名称的静态成员。这不会导致基类的静态成员被继承到派生类中,而是在派生类中创建了一个新的静态成员,其值为 20。