C++类中的静态成员

C++类中的静态成员:(所有问题的关键都在其的“共享性”上)

关键词:static

静态成员变量:

//静态成员变量
	//所有对象"共享"同一份数据 (哪一个对象进行了更改其它也会跟着一起变,源于其“共享性”)
	//在 编译阶段 分配内存    (还没有双击exe文件之前 所在全局区)

使用方法:类内声明、类外初始化

访问方式:通过对象进行访问 或 者通过类名进行访问

参考代码:

#include <iostream>
using namespace std;

class Person
{
public:
	//此为类内声明
	static int m_A;

	//更换权限是因为 静态成员变量也是有访问权限的
    
private:
    //此为类内声明
	static int m_B;
};

//此为类外初始化
//注意:初始化时一定要声明,这个静态成员变量所属的作用域。

int Person::m_A = 100; 
int Person::m_B = 200;

//void test01()
//{
//	Person P;
//	cout << P.m_A << endl;
//
//	Person P2;
//	P2.m_A = 200;
//	cout << P.m_A << endl;	//改变后数据改变了
//}


void test01()
{
	//静态成员变量 不属于某个对象上,所有对象都共享同一份数据
	//因此静态成员变量有两种访问方式

	//1、通过对象进行访问
	/*Person P;
	cout << P.m_A << endl;*/

	//2、通过类名进行访问	因为共享 所以不需要通过构建一个对象 就可以访问
	cout << Person::m_A << endl;

	//cout << Person::m_B << endl; 私有权限无法访问
}

int main()
{
	
	test01();
	
	system("pause");
	return 0;
}

静态成员函数:

//静态成员函数
	//所有对象"共享"一个函数
	//静态成员函数只能访问静态成员变量

使用方法:类内声明与定义

访问方式:通过对象进行访问 或 者通过类名进行访问 且 “其本身只能够访问静态成员变量”

参考代码:

#include <iostream>
using namespace std;

//静态成员函数
	//所有对象"共享"一个函数
	//静态成员函数只能访问静态成员变量

class Person
{
	//同样静态成员函数 也是有访问权限的

public:	
	//原因:静态成员函数是可以通过类名来进行访问的 是共享的
	//如果在 静态成员函数里面有非静态成员变量 
	//那么系统会不清楚 所更改的是哪一个对象的 非静态成员变量

	//静态成员函数
	static void func()
	{
		m_A = 100;	//静态成员函数是可以访问静态成员变量	(共享的 不需要知道是哪一个的)
		//m_B = 200;	//静态成员函数 不可以访问 非静态成员变量 无法区分到底是哪一个对象的m_B
		cout << "static void func调用" << endl;
	}

	static int m_A;	//静态成员变量
	int m_B;		//非静态成员变量

private:
	static void func2()
	{
		cout << "static void func的调用" << endl;
	}

};

int Person::m_A = 0;


void test01()
{
	//1、通过对象访问
	Person P;
	P.func();

	//2、通过类名访问
	Person::func();

	//Person::func2();
}

int main()
{

	test01();

	system("pause");
	return 0;
}
posted @ 2022-06-27 23:10  如此而已~~~  阅读(66)  评论(0)    收藏  举报
//雪花飘落效果