在C++中,基類(base class)的靜態成員變量可以被派生類(derived class)訪問和修改。靜態成員變量是屬于類的,而不是屬于某個特定對象的。因此,它們在內存中只有一個副本,可以通過類名直接訪問,也可以通過對象訪問。
下面是一個簡單的例子,展示了如何在基類中定義靜態成員變量,并在派生類中使用它:
#include<iostream>
// 基類
class Base {
public:
static int staticVar; // 靜態成員變量聲明
};
// 靜態成員變量定義和初始化
int Base::staticVar = 0;
// 派生類
class Derived : public Base {
public:
void printStaticVar() {
std::cout << "Static variable value in Derived class: "<< staticVar<< std::endl;
}
};
int main() {
Base baseObj;
Derived derivedObj;
// 通過基類對象訪問靜態成員變量
baseObj.staticVar = 10;
std::cout << "Static variable value in Base class: "<< baseObj.staticVar<< std::endl;
// 通過派生類對象訪問靜態成員變量
derivedObj.printStaticVar();
// 通過類名訪問靜態成員變量
Base::staticVar = 20;
std::cout << "Static variable value in Base class: "<< Base::staticVar<< std::endl;
derivedObj.printStaticVar();
return 0;
}
輸出結果:
Static variable value in Base class: 10
Static variable value in Derived class: 10
Static variable value in Base class: 20
Static variable value in Derived class: 20
從輸出結果可以看到,無論是通過基類對象、派生類對象還是類名訪問靜態成員變量,都能正確地獲取和修改它的值。這說明靜態成員變量在基類和派生類之間是共享的。