C++学习模板篇(静态数据成员与静态成员函数)

前面学过:

普通数据成员和普通的成员函数

常数据成员和常成员函数

今天学习:

静态数据成员和静态成员函数

1.如何声明

直接在普通的数据成员和普通的成员函数的前面加上static就成了静态的。


静态成员变量属于类本身,而不属于某个对象,所以它不依赖于对象的实例化,不会在类的构造函数中初始化,它的初始化往往单独进行,如上图所示,初始化时不再加static关键字,必须定义在类外,注意初始化形式和位置,前面必须写上类型,然后写上属于哪个类,最后赋处置。

2.访问方式


3.普通数据成员和静态数据成员的区别

如下图所示,实例化了t1,t2,t3,t4四个对象以后,普通数据成员m_strCode也随着四个对象的产生而分别产生了四个,而在对象诞生之前,静态成员变量s_iCount就已经诞生了,而且只诞生一次,在四个对象产生的过程中,这个静态数据成员的值会变化(累加),但是数量始终是一个,不会随着对象的增加而变化,


4.从this指针谈静态成员函数

举例如下类Tank,


对比普通成员函数和静态成员函数两种调用成员变量的不同:普通成员函数fire虽然看上去一个参数都没有,但是它却有一个隐形的参数this指针,通过this指针就可以知道当前要调用的是哪一个对象对应的数据成员或者是成员函数;因为static变量或函数相对于所有的对象来说,相当于是全局的,因此调用时根本不用区分,普通成员函数当然也能调用。

而静态成员函数没有隐形的this指针作为参数,如果调用普通数据成员,则无法知晓究竟调用的是哪一个对象的数据成员或成员函数,而因为静态的数据成员和成员函数不属于某个对象,属于类本身,可以认为是全局的,所以在静态函数里面能够调用。

总结以上,得出结论:

(1)非静态成员函数可以调用静态的成员函数和成员变量

(2)静态的成员函数却不可以调用非静态的成员函数和成员变量,而只能调用静态的



最后总结静态成员变量和静态函数的使用注意事项:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值