派生类中的静态成员

时间:2022-09-07 19:20:09
1.基类定义的静态成员,将被所有派生类共享
2.根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问性质 
3.派生类中访问静态成员,用以下形式显式说明:
类名 :: 成员

    或通过对象访问 对象名 . 成员


#include<iostream.h>
class B
{ public:
    static void Add() { i++ ; }
    static int i;
    void out() { cout<<"static i="<<i<<endl; }
};
int B::i=0;
class D : private B
{ public:    
      void f(); 
       { i=5;
         Add();
         B::i++;
         B::Add();
       }
};


void main()
{ B x;  D y;
  x.Add();
  x.out(); //static i = 1;
  y.f();
  cout<<"static i="<<B::i<<endl;//static i = 8
  cout<<"static i="<<x.i<<endl; //static i = 8
  //cout<<"static i="<<y.i<<endl;  //错误,i 是类D的私有静态数据成员

}