41 C++ 静态成员

本文详细介绍了C++中的静态成员,包括静态变量和静态函数。静态成员变量为所有对象共享,内存分配在编译阶段,可通过类名直接访问。静态成员函数只能访问静态成员,不与特定对象关联。示例展示了如何声明、初始化及使用静态成员。
摘要由CSDN通过智能技术生成

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

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

静态成员变量

  • 所有对象共享同一份数据
  • 在编译阶段分配内存
  • 类内声明,类外初始化
#include "cf_08.h"

class PersonH
{
public:
	static int a;

private:
	static int b;
};

// 静态变量的特点: 类内声明,类外初始化
int PersonH::a = 10;
int PersonH::b = 20;


void cf_08_test_01()
{
	// 通过类访问
	cout << "通过类访问" << endl;
	PersonH ph1;
	cout << "ph1.a的值:" << ph1.a << endl;
	ph1.a = 30;
	//ph1.b = 20; // 私有无法访问
	cout << "ph1.a的值:" << ph1.a << endl;

	PersonH ph2;
	ph2.a = 40;		//与ph1.a共享同一份数据
	cout << "ph2.a的值:" << ph2.a << endl;
	cout << "ph1.a的值:" << ph1.a << endl;

	// 通过类名访问
	cout << endl;
	cout << "通过类名访问" << endl;
	cout << "PersonH.a的值" << PersonH::a << endl;
}

静态成员函数

  • 所有对象共享同一个函数
  • 静态成员函数只能访问静态成员变量
#include"cf_09.h"

class PersonI
{
public:
	static void func_01()
	{
		cout << "call func_01" << endl;
		cout << "value of a:"<< a << endl;
	}
	static int a;
	int b;

private:
	static void func_02()
	{
		cout << "call func_02" << endl;
	}
};
int PersonI::a = 10;


void cf_09_test_01() {
	// 通过实例访问
	PersonI pi1;
	pi1.func_01();
	//pi1.func_02();// 私有成员函数无法访问;

	// 通过类范围
	PersonI::func_01();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值