0
点赞
收藏
分享

微信扫一扫

5.26作业

菜头粿子园 2024-05-27 阅读 26

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

概念

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量,用static修饰的成员函数,称之为静态成员函数,静态成员变量一定要在类外进行初始化。

我们来看下面的这一段代码,思考一下,程序中创建出了多少个类对象。

#include<iostream>
using namespace std;
class A
{
public:
	A()
	{
		++_scount;
	}
	A(const A& t)
	{
		++_scount;
	}
	static int GetAcount()
	{
		//this->
		return _scount;
	}
private:
//	int _a1 = 1;
//	int _a2 = 2;
//public:
	static int _scount;
};
int A::_scount = 0;
void TestA()
{
	cout << A::GetAcount() <<endl;
	A a1, a2;
	A a3(a1);
	cout << A::GetAcount() << endl;
}
int main()
{
	TestA();
	return 0;
}

 在上面的这段代码当中,我们可以获取到下面的几个知识点

  • 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明
  • 类静态成员即可用类名::静态成员或者对象.静态成员来访问。
  • 静态成员函数没有隐藏的this指针, 不能访问任何非静态成员
  • 静态成员也是类的成员,受到public,protected,private等访问限定符的约束。

我们再来看下面的这段代码:

#include<iostream>
using namespace std;
class A
{
public:
	A()
	{
		++_scount;
	}
	A(const A& t)
	{
		++_scount;
	}
	static int GetAcount()
	{
		//this->
		return _scount;
	}
private:
	int _a1 = 1;
	int _a2 = 2;
//public:
	static int _scount;
};
int A::_scount = 0;
void TestA()
{
	cout << A::GetAcount() <<endl;
	A a1, a2;
	A a3(a1);
	cout << A::GetAcount() << endl;
}
int main()
{
	A aa1;
	cout << sizeof(aa1) << endl;
	return 0;
}

 

我们可以看到,类的大小是4个字节,这个说明了什么呢?

说明静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区。

 

举报

相关推荐

5.26 信号底层API:sigaction函数

作业

【作业】2022.4.15 周末作业基础版

2.22 作业

2024.4.8作业

作业Assignment

10.11作业

0 条评论