静态数据成员:
用关键字static声明
该类的所有对象维护该成员的同一个拷贝
必须在类外定义和初始化,用(::)来指明所属的类。
静态成员函数:
类外代码可以使用类名和作用域操作符来调用静态成员函数。
静态成员函数可以直接引用属于该类的静态数据成员或静态成员函数。
而访问非静态成员,必须通过对象名。
例:具有静态数据、函数成员的 Point类
#include <iostream.h>
class Point //Point类声明
{public: //外部接口
Point(int xx=0,int yy=0){X=xx;Y=yy;countP++;}
Point(Point &p);//拷贝构造函数
int GetX() {return X;}
int GetY() {return Y;}
static void GetC()
{cout<<" Object id="<<countP<<endl;}
private: //私有数据成员
int X,Y;
static int countP;
}
Point::Point(Point &p)
{ X=p.X;
Y=p.Y;
countP++;
}
int Point::countP=0;
int main() //主函数实现
{ Point A(4,5); //声明对象A
cout<<"Point A,"<<A.GetX()<<","<<A.GetY();
A.GetC(); //输出对象号,对象名引用
Point B(A); //声明对象B
cout<<"Point B,"<<B.GetX()<<","<<B.GetY();
Point::GetC(); //输出对象号,类名引用
}