c++静态成员

静态成员就是在成员变量和成员函数前加上关键词static。

静态成员分为:

  • 静态成员变量
    1.所有对象共享一份数据
    2.在编译阶段分配内存
    3.类内声明,类外初始化
    4.它不属于任何对象,是类定义的一部分,它在程序开始运行时创建
    5.它所占空间的回收在程序结束时进行。
  • 静态成员函数
    1.所有对象共享一个函数
    2.静态成员函数只能访问静态成员变量
//静态成员变量
class Person
{
public:
//1.所有对象都共享同一份数据
//2.编译阶段就分配内存
//3.类内声明,类外初始化操作
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;
}
void test02()
{
//静态成员变量 不属于某个对象上,所有对象都共享同一份数据
//因此静态成员变量有两种访问方式
//1.通过对象进行访问
Person p;
cout<<p.m_A<<endl;
cout<<p.m_B<<endl;//类外访问不到私有静态成员变量
//2.通过类名进行访问
cout<<Person::m_A<<endl;
}
int main()
{
	test01();
}
//静态成员函数
//所有对象共享同一个函数
//静态成员函数只能访问静态成员变量
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;
};
//静态成员函数也是有访问权限的,不能访问私有区域。
int Person::m_A=0;
void test01()
{
	//通过对象访问
	Person p;
	p.func();
	//通过类名访问
	Person::func();
}
int main()
{
	test01();
}

由于静态成员函数没有this指针,它只能直接访问该类的静态数据成员,静态成员函数和类以外的函数和数据。
访问类中的非静态数据成员必须通过参数传递方式得到对象名,然后通过对象名来访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值