c++:类的静态成员的知识要点

  • 为什么要用到类的静态成员?
    面向对象的程序设计方法兼顾数据的共享与保护,再其过程中数据达到了共享与 保护,然而数据之间的共享还应该包括对象与对象之间,才能保证数据的正确性与完整性,其作用是解决同一个类的不同对象之间的数据和函数共享问题

  • 类的静态成员分类
    类的静态成员分为了静态数据成员静态函数成员

  • 静态数据成员

    1.定义:采用static关键字来声明数据成员
    2.用法:类名::标识符
    3.例如:含有静态数据成员的Point类

 #include<iostream>
using namespace std;
class Point //Point类的定义 
{
	public: //外部接口 
		Point(int x=0,int y=0):x(x),y(y){//构造函数及其初始化 
		//在构造函数中对cout累加,所有对象共同维护同一个count
		count++; 
	     }
	    Point(Point &p)//复制构造函数 
	        {
		       x=p.x;
		       y=p.y;
	 	       count++; 
	        }
	   ~Point() { count--;}//析构函数
	   int getX()
	       {
	 	      return x;
	       } 
	   int getY()
	      {
	          return y;
	      }
	    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();
	a.showCount();//输出对象个数
	Point b(a);//定义对象b,其构造函数会是count+1;
	b.showCount();
	return 0; 
 } 
  • 这个Point 类中count声明为静态数据成员,每定义一个新对象(也就是一个点)这个count就会加1,在使用构成中应当注意他的声明和初始化
    静态函数成员
    注意:静态成员函数可以直接访问该类的静态数据和函数成员,然而访问非静态成员必须通过对象名 。

  • 静态函数成员的用法

#include<iostream>
using namespace std;
class Point //Point类的定义 
{
	public: //外部接口 
		Point(int x=0,int y=0):x(x),y(y){//构造函数及其初始化 
		//在构造函数中对cout累加,所有对象共同维护同一个count
		count++; 
	     }
	    Point(Point &p)//复制构造函数 
	        {
		       x=p.x;
		       y=p.y;
	 	       count++; 
	        }
	   ~Point() { count--;}//析构函数
	   int getX()
	       {
	 	      return x;
	       } 
	   int getY()
	      {
	          return y;
	      }
	    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();
	a.showCount();//输出对象个数
	Point b(a);//定义对象b,其构造函数会是count+1;
	b.showCount();
	return 0; 
 } 

注意:静态函数成员与静态数据成员不同处在于调用时通过什么来访问,这一点必须记清楚不能搞混淆。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值