C++类中的静态数据成员--static

     在类中使用静态成员的目的是为了解决数据共享的的问题:如果想在同类中的多个对象之间实现数据共享,又避免使用全局变量,那么可以用类的静态数据成员来实现。


    PS: 如果使用全局变量,这样很不安全,因为全局变量的值被所有函数所共享,可以在任何函数中被修改,而且在

大项目中,它很容易与其他名字相冲突。因此在实际中很少使用全局变量。

     在C++中类的数据成员如果被声明为static,那么它就是静态数据成员,意味着它为该类的所有对象共享。

     

     对象的普通数据成员和对象是“共消亡”的:对象在,它们自然存在;一旦对象消亡,它们自然会随之消亡。而静态数据成员就不一样了,由于它不专属于某个对象,它的生命周期与整个程序相同,因此即使某个对象消亡了,它还会在程序中继续存在,被同类的其他对象共享。

     因为类的静态数据成员被保存在静态数据区,该类的所有对象都共享这块静态存储空间。静态数据成员的值对每个对象都是一样的,但它的值是可以更新的。无论那个对象修改了静态数据成员的值,同类的所有对象都会存取更新后的唯一值。

   

       声明静态数据成员的语法:

      static  数据类型  静态数据成员名

      初始化静态数据成员,在类的外面,语法:

      数据类型  类名::静态数据成员名=初始值

    

    由于只属于类所有,静态数据成员的访问形式有别于普通的数据成员。

     访问形式

                   类名::静态数据成员名


#include<iostream>
using namespace std;

class Point
{
public:
	Point()
	{
		x=0;
		y=0;
		counter++;
	}
	~Point()
	{
		counter--;
	}
	Point(float x,float y)
	{
		this->x=x;
		this->y=y;
		counter++;
	}
	void move(float x,float y)
	{
		this->x=x;
		this->y=y;
	}
	float getX()
	{
		return x;
	}
	float getY()
	{
		return y;
	}

public:
	static int counter;
private:
	float x,y;
};

int Point::counter=0;

int main()
{
	Point *p1=new Point(1,1);
	Point *p2=new Point(2,2);
	Point *p3=new Point(3,3);

	cout<<"已创建的点数是:"<<Point::counter<<endl;
	
	delete p1;
	delete p2;
	delete p3;

	cout<<Point::counter<<endl;

	system("pause");
	return 0;
}


      


  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值