static成员和GetACunt()函数的应用

引子所谓学习之前先看图

➕修饰成员变量 

⽤static修饰的成员变量,称之为静态成员变量

• 静态成员变量⼀定要在类外进⾏初始化

• 静态成员变量为所有类对象所共享不属于某个具体的对象,不存在对象中,存放在静区

实现⼀个类,计算程序中创建出了多少个类对象?

前提还不想被别人访问。   该怎么办呢--》》》static修饰成员变量

#include<iostream>
using namespace std;
class A
{
public:
	A()
	{
		++_scount;
	}
	A(const A& t)
	{
		++_scount;
	}
	static int GetACount()
	{
		return _scount;
	}
//private:
	// 类⾥⾯声明
	static int _scount;
};
// 类外⾯初始化
int A::_scount = 0;
int main()
{
	//
	A aa1;
	A aa2 = aa1;
	cout << A::_scount<<endl;
	cout << aa1._scount;
	//cout << A::GetACount() << endl;
	return 0;
}

这就相当于全局的静态放到类里面变成类专属受到类限制🚫

彩蛋 🥚🥚

静态成员也是类的成员,受public、protected、private 访问限定符的限制。

当在类中声明变成私域-》》报错  但是 有这个函数就不会了

	cout << A::GetACount() << endl;

 ➕➕⽤static修饰的成员函数

例二  计算程序中创建出了多少个占用内存的类对象

前提注意⚠️突破类域就可以访问静态成员,可以通过类名::静态成员 或者 对象.静态成员 来访问静态成员变量 和静态成员函数。

⽤static修饰的成员函数,称之为静态成员函数,静态成员函数没有this指针。

• 静态成员函数中可以访问其他的静态成员,但是不能访问⾮静态的,因为没有this指针

• ⾮静态的成员函数,可以访问任意的静态成员变量和静态成员函数。

另外

静态成员变量不能在声明位置给缺省值初始化,因为缺省值是个构造函数初始化列表的,静态成员 变量不属于某个对象,不⾛构造函数初始化列表

共勉 

同为未来的it人让我们在共同进步吧。

我很喜欢雷军的一段话:我们就悄悄的干,就算失败了咱也不丢人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值