C++语言程序化设计——第三次作业
C++语言程序化设计——第三次作业
第五章知识重难点剖析
一、知识点——类的静态成员
定义:
静态成员,指的是在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。即声明为static的类成员或者成员函数便能在类的范围内同享。
——来源:百度百科·静态成员
目的:
解决同一个类的不同对象之间数据和函数共享问题
优点:
可以兼顾数据的共享与保护
静态数据成员
静态数据成员具有静态生存期。由于静态数据成员不属于任何一个对象,因此可以通过类名对它进行访问,一般的用法是“类名::标识符”。
静态函数成员
静态函数成员可以直接访问该类的静态数据和函数成员。而访问非静态成员,必须通过对象名。
二、代码实例——具有静态数据和函数成员的Point类
class Point{ //Point类定义
public:
Point(int x=0,int y=0):x(x),y(y){
count++;
}
Point(Point &p){
x=p.x;
y=p.y;
count++;
}
~Point(){count--;}
int getX(){return x;}
int getY(){return y;}
static void showCount(){ //静态函数成员
cout<<" Object count="<<count<<endl;
}
private:
int x,y;
static int count; //静态数据成员
};
int Point::count=0; //静态函数成员的定义和初始化,直接使用类名限定
int main(){
Point a(4,5);
cout<<"Point A: "<<a.getX()<<","<<a.getY();
Point::showCount();//静态函数成员的调用,不依赖于任何对象
Point b(a);
cout<<"Point B: "<<b.getX()<<","<<b.getY();
Point::showCount();//同上,不依赖于任何对象
return 0;
}
运行结果:
三、结果解析
实验结果证明,使用类的静态成员,很好的解决了不同对象之间数据和函数共享问题