静态成员的使用(P111)

/*

类的静态成员有两种:静态成员变量和静态成员函数。
static定义类静态变量时,在类定义中声明静态成员变量,然后必须在类体外定义静态成员变量的初值。这个初值不能在类体内赋值。 格式:类型 类名::静态成员变量=初值
eg:int classA::num=0;

类的静态成员函数只能处理类的静态成员变量。静态成员函数内不能调用非静态成员函数。

*/

#include<iostream>
using namespace std;

class classA
{
public:
double x,y;
static int num; //公有静态成员变量——供所有对象“共享”
//用于记录通过构造函数已生成的对象个数

classA()
{
x = 0;
y = 0;
num++; //每生成一个对象,num加1
}
classA(double x0,double y0)
{
x = x0;
y = y0;
num++;
}
static void staticFun() //静态成员函数,输出成员变量num的当前值
{
cout<<"current_num="<<num<<endl;
//cout<<"x="<<x<<endl; //错误,在静态函数中不能访问
}
};

int classA::num = 0; //必须在类体外(使用类名限定)初始化静态成员变量
int main()
{
classA obj(1.2,3.4),*p; //调用1次构造函数
cout<<"classA::num="<<classA::num<<endl;//使用类名做限定符
classA::staticFun();
cout<<endl;
classA A[3]; //调用3次构造函数
cout<<"classA::num="<<classA::num<<endl;
classA::staticFun();
cout<<endl;
p = new classA(5.6,7.8); //调用1次构造函数
cout<<"classA::num="<<classA::num<<endl;
classA::staticFun();
cout<<"p->num="<<p->num<<endl;
p->staticFun();
return 0;
}

posted @ 2020-03-06 22:07  CollisionDimension  阅读(182)  评论(0)    收藏  举报