可能重复:
是否继承了静态成员?(C++)
如果我有一个父类(Base)并且它有一个静态std::map,那么Base和它们Base的孩子都有相同的一致std::map吗?如果没有,我怎么能让他们分享呢?
是的,他们都分享:
class A {
protected:
static std::map<int,int> x;
public:
static void push(int a, int b) { x[a] = b; }
};
class B : public A {
public:
static int size() { return x.size(); }
};
int main() {
A::push(5,3);
A::push(4,2);
std::cout << B::size() << "\n"; // Displays "2"
}
Run Code Online (Sandbox Code Playgroud)
当然,除非其中一个子类声明自己的成员变量具有相同的名称,否则将隐藏基类版本.