类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 );
}