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
類的靜態成員變量。相反,它定義了自己的靜態成員變量,覆蓋了父類的靜態成員變量。