【07】static成员变量函数

版权声明:zhuhurry 未经博主允许不得转载    https://blog.csdn.net/zhuhurry

一、static 成员变量
有的时候,我们需要计算某个类的对象以创建对象的个数,我们可以使用全局变量来统计,但是这样破坏了数据的封装性。这时可以使用类的静态成员来解决这个问题。
非static数据成员,存在于类的每一个对象中。而static成员是独立于对象存在。所有该类对象都共享一个static成员变量。
1.static成员的定义
static成员需要 在类定义体外进行初始化与定义
static成员变量 不能在构造函数初始化列表中初始化,因为它不属于某个对象
const成员变量只能在构造函数初始化列表中初始化
2.特殊的整型static const成员
整型static const成员可以在类定义体中初始化,该成员可以不在类体外进行定义
非整形的static const成员还是必须在类定义体外初始化和定义
3.static成员优点
static成员的名字是在类的作用域中,因此可以避免与其他类成员或全局变量冲突
可以实施封装,static成员可以是私有的,而全局对象不可以
读程序容易看出static成员与某个类相关联,这种可见性可以清晰地反映程序员的意图。
示例一,static和const在类中修饰成员变量注意事项
示例二,计算几个类有多少个对象

二、static成员函数
①static成员函数没有隐含的this指针
②非静态成员函数可以访问静态成员
③静态成员函数不可以访问非静态成员(实际上是直接访问是不可以的,间接地访问是可以的,比如通过类指针或类引用)
如何让static成员函数访问非static成员变量?

三、类/对象大小计算
类/对象的大小与成员变量有关和成员变量无关
类/对象的大小计算遵循前面学过的结构体对其原则
类/对象的带下与静态成员变量无关
虚继承和虚函数对类的大小的影响见后面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值