静态成员变量和静态成员函数

静态成员变量

static 在类中使用的时候,大家可以共享他的数据,就是无论创建多少个对象,都是共享一个静态成员,举个例子

class stu
{
	static int c;
	public:
	void put (int a)
	{
		c=a;
	}
	void get ()
	{
		cout <<"c="<<c<<endl;
	}
	void plus()
	{
		c+=2;
	}

};
int stu::c=0; //静态成员的初始化,他只能初始化在类的外部
int main(int argc, char *argv[])
{
	stu my;
	my.put(10);
	stu my1;
	my.get();
	my.plus(); 
	my1.plus(); //不同的类对c这个成员进行加法运算,但是都是在上一个的基础上
	my.get();
	return 0;
}

在这里插入图片描述

静态成员函数

就是在成员函数前面加上static,但是由于他分不清是哪个类的,所以他没有this指针

class stu
{
	static int c;
	public:
	int p;
	void put (int a)
	{
		c=a;
	}
	void putp (int a)
	{
		p=a;
	}
	void get ()
	{
		cout <<"c="<<c<<endl;
	}
	void plus()
	{
		c+=2;
	}
	static void my_cout ();

};
int stu::c=0;
	void stu:: my_cout ()
	{
		cout <<"c="<<c<<endl;
		cout <<"p="<<p<<endl;//错误,不能访问
	}

int main(int argc, char *argv[])
{
	stu my;
	my.put(10);
	my.putp(10);
	my.my_cout();
	stu my1;
	my.get();
	my.plus();
	my1.plus();
	my.get();
	return 0;
}

我们观察结果知道,静态函数有如下的特点

  1. 出现在类体外函数体不能定义static
  2. 静态函数和静态成员之间可以相互访问
  3. 但是静态函数不能访问非静态函数的成员
    优点:由于没有this指针的额外,速度快!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值