C++学习模板篇(静态数据成员与静态成员函数)
来源:互联网 发布:js 封装自定义组件 编辑:程序博客网 时间:2024/06/16 04:12
前面学过:
普通数据成员和普通的成员函数
常数据成员和常成员函数
今天学习:
静态数据成员和静态成员函数
1.如何声明
直接在普通的数据成员和普通的成员函数的前面加上static就成了静态的。
静态成员变量属于类本身,而不属于某个对象,所以它不依赖于对象的实例化,不会在类的构造函数中初始化,它的初始化往往单独进行,如上图所示,初始化时不再加static关键字,必须定义在类外,注意初始化形式和位置,前面必须写上类型,然后写上属于哪个类,最后赋处置。
2.访问方式
3.普通数据成员和静态数据成员的区别
如下图所示,实例化了t1,t2,t3,t4四个对象以后,普通数据成员m_strCode也随着四个对象的产生而分别产生了四个,而在对象诞生之前,静态成员变量s_iCount就已经诞生了,而且只诞生一次,在四个对象产生的过程中,这个静态数据成员的值会变化(累加),但是数量始终是一个,不会随着对象的增加而变化,
4.从this指针谈静态成员函数
举例如下类Tank,
对比普通成员函数和静态成员函数两种调用成员变量的不同:普通成员函数fire虽然看上去一个参数都没有,但是它却有一个隐形的参数this指针,通过this指针就可以知道当前要调用的是哪一个对象对应的数据成员或者是成员函数;因为static变量或函数相对于所有的对象来说,相当于是全局的,因此调用时根本不用区分,普通成员函数当然也能调用。
而静态成员函数没有隐形的this指针作为参数,如果调用普通数据成员,则无法知晓究竟调用的是哪一个对象的数据成员或成员函数,而因为静态的数据成员和成员函数不属于某个对象,属于类本身,可以认为是全局的,所以在静态函数里面能够调用。
总结以上,得出结论:
(1)非静态成员函数可以调用静态的成员函数和成员变量
(2)静态的成员函数却不可以调用非静态的成员函数和成员变量,而只能调用静态的
最后总结静态成员变量和静态函数的使用注意事项:
- C++学习模板篇(静态数据成员与静态成员函数)
- c++:静态函数成员与静态数据成员
- 3-6 静态数据成员与静态成员函数(c++)
- 静态成员函数与静态数据成员
- 静态成员函数 与 静态数据成员
- 静态成员函数与静态数据成员
- 静态数据成员与静态成员函数
- static(c++)静态数据成员和静态成员函数
- C++_静态数据成员和静态成员函数
- C++类静态数据成员与类静态成员函数
- C++类静态数据成员与类静态成员函数
- C++类静态数据成员与类静态成员函数
- C++类静态数据成员与类静态成员函数
- C++类静态数据成员与类静态成员函数
- C++类静态数据成员与类静态成员函数
- c++类静态数据成员与类静态成员函数
- C++静态成员数据与静态成员函数小结
- C++类静态数据成员与类静态成员函数
- hdu4552怪盗基德的挑战书&hdu3336Count the string【后缀数组求各前缀重复次数和】
- mac下安装memcached
- 在Unity中使用Lua脚本:语言层和游戏逻辑粘合层处理
- [NSBundle mainBundle] 详解
- LeetCode27RemoveElement--In Java
- C++学习模板篇(静态数据成员与静态成员函数)
- hidesBottomBarWhenPushed的使用
- 处理placeHolder 的图片内容类型
- Spark 读取HDFS存入 HBase(1.0.0 新 API)
- IO多路复用之poll总结
- Android开发-Touch事件分发响应机制
- Java Socket编程 标准范例(多线程)
- 马走日 回溯实现(不是最佳方案但能找出路径)
- Donate