关于类的static数据成员和成员函数

2014-11-18 15:10:23 · 作者: · 浏览: 24

  类static成员的两个问题:


  如果需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务,这个时候常用类成员来解决问题。


  1、静态数据成员要在类外定义。


  2、类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数,如果一定要访问成员变量,可以在参数中传入对象,通过对象可以访问类的私用和公有成员。


  例如:


  class CA


  {


  public:


  CA( int a1 );


  int a;


  // int sum();


  static int sum( CA *A);


  private:


  static int count; //= 30; //= 0;


  };


  int CA::count;


  CA::CA( int a1 )


  {


  a = a1;


  }


  int CA::sum( CA *A) /////////static函数sum调用了类的非静态变量a


  {


  if(A->a > 30 )


  {


  return 0;


  }


  else


  {


  return 1;


  }


  }


  void main()


  {


  CA A( 1 );


  A.sum( &A );


  }